Skip to main content
POST
/
plans
cURL
curl --request POST \
  --url https://sandbox.withclasp.com/plans \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "plan_name": "<string>",
  "plan_type": "<string>",
  "group": "<string>",
  "effective_start": "2023-12-25",
  "effective_end": "2023-12-25",
  "requires_primary_care_provider": true,
  "plan_details": [
    {
      "label": "<string>",
      "tooltip": "<string>",
      "info_lines": [
        "<string>"
      ]
    }
  ],
  "hsa_eligible": false
}
'
import requests

url = "https://sandbox.withclasp.com/plans"

payload = {
"plan_name": "<string>",
"plan_type": "<string>",
"group": "<string>",
"effective_start": "2023-12-25",
"effective_end": "2023-12-25",
"requires_primary_care_provider": True,
"plan_details": [
{
"label": "<string>",
"tooltip": "<string>",
"info_lines": ["<string>"]
}
],
"hsa_eligible": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
plan_name: '<string>',
plan_type: '<string>',
group: '<string>',
effective_start: '2023-12-25',
effective_end: '2023-12-25',
requires_primary_care_provider: true,
plan_details: [{label: '<string>', tooltip: '<string>', info_lines: ['<string>']}],
hsa_eligible: false
})
};

fetch('https://sandbox.withclasp.com/plans', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.withclasp.com/plans",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'plan_name' => '<string>',
'plan_type' => '<string>',
'group' => '<string>',
'effective_start' => '2023-12-25',
'effective_end' => '2023-12-25',
'requires_primary_care_provider' => true,
'plan_details' => [
[
'label' => '<string>',
'tooltip' => '<string>',
'info_lines' => [
'<string>'
]
]
],
'hsa_eligible' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://sandbox.withclasp.com/plans"

payload := strings.NewReader("{\n \"plan_name\": \"<string>\",\n \"plan_type\": \"<string>\",\n \"group\": \"<string>\",\n \"effective_start\": \"2023-12-25\",\n \"effective_end\": \"2023-12-25\",\n \"requires_primary_care_provider\": true,\n \"plan_details\": [\n {\n \"label\": \"<string>\",\n \"tooltip\": \"<string>\",\n \"info_lines\": [\n \"<string>\"\n ]\n }\n ],\n \"hsa_eligible\": false\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://sandbox.withclasp.com/plans")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"plan_name\": \"<string>\",\n \"plan_type\": \"<string>\",\n \"group\": \"<string>\",\n \"effective_start\": \"2023-12-25\",\n \"effective_end\": \"2023-12-25\",\n \"requires_primary_care_provider\": true,\n \"plan_details\": [\n {\n \"label\": \"<string>\",\n \"tooltip\": \"<string>\",\n \"info_lines\": [\n \"<string>\"\n ]\n }\n ],\n \"hsa_eligible\": false\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://sandbox.withclasp.com/plans")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"plan_name\": \"<string>\",\n \"plan_type\": \"<string>\",\n \"group\": \"<string>\",\n \"effective_start\": \"2023-12-25\",\n \"effective_end\": \"2023-12-25\",\n \"requires_primary_care_provider\": true,\n \"plan_details\": [\n {\n \"label\": \"<string>\",\n \"tooltip\": \"<string>\",\n \"info_lines\": [\n \"<string>\"\n ]\n }\n ],\n \"hsa_eligible\": false\n}"

response = http.request(request)
puts response.read_body
{
  "id": "<string>",
  "plan_name": "<string>",
  "plan_type": "<string>",
  "group": "<string>",
  "effective_start": "2023-12-25",
  "effective_end": "2023-12-25",
  "member_count": 123,
  "dependent_count": 123,
  "requires_primary_care_provider": true,
  "plan_details": "<unknown>",
  "plan_summary_url": "<string>",
  "is_low_cost": true,
  "provides_minimum_value": true,
  "provides_essential_coverage": true,
  "dependent_coverage_excluded": true,
  "spouse_coverage_excluded": true,
  "bundle": "<string>",
  "partner_dependents_eligible": true,
  "child_dependents_eligible": true,
  "voluntary_coverage_options": {},
  "plan_configurations": [
    "<string>"
  ],
  "required_enrollment": true,
  "hsa_eligible": true,
  "is_pre_tax": true,
  "cobra_eligible": true,
  "max_contributing_children": 123,
  "required_regions": [],
  "minimum_hours_worked": 123,
  "base_spouse_age_off_member": 123,
  "newly_available": true,
  "allowed_employment_statuses": [
    "full_time",
    "part_time"
  ],
  "union_eligible": true,
  "seasonal_eligible": true,
  "partner_enrollment_required": true,
  "child_enrollment_required": true,
  "create_payroll_benefits": true,
  "metadata": {}
}

Authorizations

Authorization
string
header
required

API Key authentication with required prefix "Bearer"

Body

plan_name
string

Human-readable name of the plan

plan_type
string

Type of plan (ppo/hmo/dhmo/...)

line_of_coverage
enum<string>
  • accident - Accident
  • accidental_death - Accidental Death and Dismemberment
  • cancer - Cancer
  • commuter_parking - Commuter Parking
  • commuter_transit - Commuter Transit
  • dental - Dental
  • dependent_care_fsa - Dependent Care Flexible Spending Account
  • healthcare_fsa - Healthcare Flexible Spending Account
  • hospital_indemnity - Hospital Indemnity
  • hsa - Health Savings Account
  • life - Life
  • limited_purpose_fsa - Limited Purpose Flexible Spending Account
  • long_term_disability - Long Term Disability
  • lump_sum_disability - Lump Sum Disability
  • medical - Medical
  • short_term_disability - Short Term Disability
  • supplemental - Supplemental
  • telemedicine - Telemedicine
  • vision - Vision
  • voluntary_critical_illness - Voluntary Critical Illness
  • voluntary_life - Voluntary Life
  • voluntary_accidental_death - Voluntary Accidental Death
  • voluntary_short_term_disability - Voluntary Short Term Disability
Available options:
accident,
accidental_death,
cancer,
commuter_parking,
commuter_transit,
dental,
dependent_care_fsa,
healthcare_fsa,
hospital_indemnity,
hsa,
life,
limited_purpose_fsa,
long_term_disability,
lump_sum_disability,
medical,
short_term_disability,
supplemental,
telemedicine,
vision,
voluntary_critical_illness,
voluntary_life,
voluntary_accidental_death,
voluntary_short_term_disability
group
string

ID of group to create plan under

effective_start
string<date>
effective_end
string<date>
requires_primary_care_provider
boolean

Whether a plan requires employees to select primary care providers during enrollment. (Commonly used for HMO plans)

plan_details
object[]

High-level details of plan that is shown during enrollment

premium_type
enum<string>

High-level details of plan that is shown during enrollment

Available options:
age_banded,
composite
hsa_eligible
boolean
default:false

Response

201 - application/json
id
string
required
read-only
Pattern: ^[-a-zA-Z0-9_]+$
plan_name
string
required
read-only
plan_type
string | null
required
read-only
line_of_coverage
enum<string>
required
  • accident - Accident
  • accidental_death - Accidental Death and Dismemberment
  • cancer - Cancer
  • commuter_parking - Commuter Parking
  • commuter_transit - Commuter Transit
  • dental - Dental
  • dependent_care_fsa - Dependent Care Flexible Spending Account
  • healthcare_fsa - Healthcare Flexible Spending Account
  • hospital_indemnity - Hospital Indemnity
  • hsa - Health Savings Account
  • life - Life
  • limited_purpose_fsa - Limited Purpose Flexible Spending Account
  • long_term_disability - Long Term Disability
  • lump_sum_disability - Lump Sum Disability
  • medical - Medical
  • short_term_disability - Short Term Disability
  • supplemental - Supplemental
  • telemedicine - Telemedicine
  • vision - Vision
  • voluntary_critical_illness - Voluntary Critical Illness
  • voluntary_life - Voluntary Life
  • voluntary_accidental_death - Voluntary Accidental Death
  • voluntary_short_term_disability - Voluntary Short Term Disability
Available options:
accident,
accidental_death,
cancer,
commuter_parking,
commuter_transit,
dental,
dependent_care_fsa,
healthcare_fsa,
hospital_indemnity,
hsa,
life,
limited_purpose_fsa,
long_term_disability,
lump_sum_disability,
medical,
short_term_disability,
supplemental,
telemedicine,
vision,
voluntary_critical_illness,
voluntary_life,
voluntary_accidental_death,
voluntary_short_term_disability
group
string
required
effective_start
string<date>
required
read-only
effective_end
string<date>
required
read-only
member_count
integer
required
read-only
dependent_count
integer
required
read-only
requires_primary_care_provider
boolean
required
read-only
plan_details
any
required
plan_summary_url
string | null
required
read-only
is_low_cost
boolean | null
provides_minimum_value
boolean | null
provides_essential_coverage
boolean | null
dependent_coverage_excluded
boolean | null
spouse_coverage_excluded
boolean | null
bundle
string | null
premium_type
enum<string> | null
Available options:
composite,
age_banded,
volume_based
partner_dependents_eligible
boolean
read-only
child_dependents_eligible
boolean
read-only
voluntary_coverage_options
object | null
read-only
plan_configurations
string[]
read-only
required_enrollment
boolean
read-only
hsa_eligible
boolean
is_pre_tax
boolean
read-only
cobra_eligible
boolean
read-only
max_contributing_children
integer | null
read-only
required_regions
enum<string>[]
read-only
  • AL - AL
  • AK - AK
  • AZ - AZ
  • AR - AR
  • CA - CA
  • CO - CO
  • CT - CT
  • DE - DE
  • DC - DC
  • FL - FL
  • GA - GA
  • HI - HI
  • ID - ID
  • IL - IL
  • IN - IN
  • IA - IA
  • KS - KS
  • KY - KY
  • LA - LA
  • ME - ME
  • MD - MD
  • MA - MA
  • MI - MI
  • MN - MN
  • MS - MS
  • MO - MO
  • MT - MT
  • NE - NE
  • NV - NV
  • NH - NH
  • NJ - NJ
  • NM - NM
  • NY - NY
  • NC - NC
  • ND - ND
  • OH - OH
  • OK - OK
  • OR - OR
  • PA - PA
  • RI - RI
  • SC - SC
  • SD - SD
  • TN - TN
  • TX - TX
  • UT - UT
  • VT - VT
  • VA - VA
  • WA - WA
  • WV - WV
  • WI - WI
  • WY - WY
Available options:
AL,
AK,
AZ,
AR,
CA,
CO,
CT,
DE,
DC,
FL,
GA,
HI,
ID,
IL,
IN,
IA,
KS,
KY,
LA,
ME,
MD,
MA,
MI,
MN,
MS,
MO,
MT,
NE,
NV,
NH,
NJ,
NM,
NY,
NC,
ND,
OH,
OK,
OR,
PA,
RI,
SC,
SD,
TN,
TX,
UT,
VT,
VA,
WA,
WV,
WI,
WY
minimum_hours_worked
integer | null
read-only
base_spouse_age_off_member
integer | null
read-only
age_calculation_method
enum<string> | null
read-only
Available options:
coverage_start_date,
plan_start_date
newly_available
boolean
allowed_employment_statuses
enum<string>[]
  • full_time - Full Time
  • part_time - Part Time
  • variable_hours - Variable Hours
Available options:
full_time,
part_time,
variable_hours
union_eligible
boolean | null
seasonal_eligible
boolean | null
partner_enrollment_required
boolean
child_enrollment_required
boolean
create_payroll_benefits
boolean
metadata
object

Up to 50 key-value pairs. Keys max 40 characters, values max 500 characters. Set a value to empty string to remove a key. On PATCH, metadata is merged with existing values.