Create a benefit plan
curl --request POST \
--url https://api.plane.com/v1/benefit/plans \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"program": "<string>",
"provider": "<string>",
"name": "<string>",
"type": "<string>",
"coverages": [
{}
],
"country": {},
"network": {},
"status": "<string>",
"starts": {},
"ends": {},
"eligibility": {},
"contribution": {},
"terms": {},
"resources": {},
"metadata": {}
}
'import requests
url = "https://api.plane.com/v1/benefit/plans"
payload = {
"program": "<string>",
"provider": "<string>",
"name": "<string>",
"type": "<string>",
"coverages": [{}],
"country": {},
"network": {},
"status": "<string>",
"starts": {},
"ends": {},
"eligibility": {},
"contribution": {},
"terms": {},
"resources": {},
"metadata": {}
}
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({
program: '<string>',
provider: '<string>',
name: '<string>',
type: '<string>',
coverages: [{}],
country: {},
network: {},
status: '<string>',
starts: {},
ends: {},
eligibility: {},
contribution: {},
terms: {},
resources: {},
metadata: {}
})
};
fetch('https://api.plane.com/v1/benefit/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://api.plane.com/v1/benefit/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([
'program' => '<string>',
'provider' => '<string>',
'name' => '<string>',
'type' => '<string>',
'coverages' => [
[
]
],
'country' => [
],
'network' => [
],
'status' => '<string>',
'starts' => [
],
'ends' => [
],
'eligibility' => [
],
'contribution' => [
],
'terms' => [
],
'resources' => [
],
'metadata' => [
]
]),
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://api.plane.com/v1/benefit/plans"
payload := strings.NewReader("{\n \"program\": \"<string>\",\n \"provider\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"coverages\": [\n {}\n ],\n \"country\": {},\n \"network\": {},\n \"status\": \"<string>\",\n \"starts\": {},\n \"ends\": {},\n \"eligibility\": {},\n \"contribution\": {},\n \"terms\": {},\n \"resources\": {},\n \"metadata\": {}\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://api.plane.com/v1/benefit/plans")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"program\": \"<string>\",\n \"provider\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"coverages\": [\n {}\n ],\n \"country\": {},\n \"network\": {},\n \"status\": \"<string>\",\n \"starts\": {},\n \"ends\": {},\n \"eligibility\": {},\n \"contribution\": {},\n \"terms\": {},\n \"resources\": {},\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.com/v1/benefit/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 \"program\": \"<string>\",\n \"provider\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"coverages\": [\n {}\n ],\n \"country\": {},\n \"network\": {},\n \"status\": \"<string>\",\n \"starts\": {},\n \"ends\": {},\n \"eligibility\": {},\n \"contribution\": {},\n \"terms\": {},\n \"resources\": {},\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"program": "bprog_R8mK2pQ9xL4s",
"provider": "benpr_8oWZpQ2rL4sk",
"name": "UnitedHealthcare PPO — Gold",
"type": "medical",
"coverages": ["employee_only", "family"]
}
{
"id": "benpl_V6nP3qR9tY2m",
"object": "benefit.plan",
"program": "bprog_R8mK2pQ9xL4s",
"provider": "benpr_8oWZpQ2rL4sk",
"entity": "ent_8oWZpQ2rL4sk",
"name": "UnitedHealthcare PPO — Gold",
"type": "medical",
"country": null,
"network": null,
"status": "draft",
"coverages": ["employee_only", "family"],
"eligibility": null,
"contribution": {},
"terms": {},
"resources": {},
"starts": null,
"ends": null,
"metadata": {},
"created": "2026-05-29T12:00:00Z",
"updated": "2026-05-29T12:00:00Z"
}
Plans
Create a benefit plan
Add a plan to a benefits program.
POST
/
v1
/
benefit
/
plans
Create a benefit plan
curl --request POST \
--url https://api.plane.com/v1/benefit/plans \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"program": "<string>",
"provider": "<string>",
"name": "<string>",
"type": "<string>",
"coverages": [
{}
],
"country": {},
"network": {},
"status": "<string>",
"starts": {},
"ends": {},
"eligibility": {},
"contribution": {},
"terms": {},
"resources": {},
"metadata": {}
}
'import requests
url = "https://api.plane.com/v1/benefit/plans"
payload = {
"program": "<string>",
"provider": "<string>",
"name": "<string>",
"type": "<string>",
"coverages": [{}],
"country": {},
"network": {},
"status": "<string>",
"starts": {},
"ends": {},
"eligibility": {},
"contribution": {},
"terms": {},
"resources": {},
"metadata": {}
}
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({
program: '<string>',
provider: '<string>',
name: '<string>',
type: '<string>',
coverages: [{}],
country: {},
network: {},
status: '<string>',
starts: {},
ends: {},
eligibility: {},
contribution: {},
terms: {},
resources: {},
metadata: {}
})
};
fetch('https://api.plane.com/v1/benefit/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://api.plane.com/v1/benefit/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([
'program' => '<string>',
'provider' => '<string>',
'name' => '<string>',
'type' => '<string>',
'coverages' => [
[
]
],
'country' => [
],
'network' => [
],
'status' => '<string>',
'starts' => [
],
'ends' => [
],
'eligibility' => [
],
'contribution' => [
],
'terms' => [
],
'resources' => [
],
'metadata' => [
]
]),
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://api.plane.com/v1/benefit/plans"
payload := strings.NewReader("{\n \"program\": \"<string>\",\n \"provider\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"coverages\": [\n {}\n ],\n \"country\": {},\n \"network\": {},\n \"status\": \"<string>\",\n \"starts\": {},\n \"ends\": {},\n \"eligibility\": {},\n \"contribution\": {},\n \"terms\": {},\n \"resources\": {},\n \"metadata\": {}\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://api.plane.com/v1/benefit/plans")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"program\": \"<string>\",\n \"provider\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"coverages\": [\n {}\n ],\n \"country\": {},\n \"network\": {},\n \"status\": \"<string>\",\n \"starts\": {},\n \"ends\": {},\n \"eligibility\": {},\n \"contribution\": {},\n \"terms\": {},\n \"resources\": {},\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.com/v1/benefit/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 \"program\": \"<string>\",\n \"provider\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"coverages\": [\n {}\n ],\n \"country\": {},\n \"network\": {},\n \"status\": \"<string>\",\n \"starts\": {},\n \"ends\": {},\n \"eligibility\": {},\n \"contribution\": {},\n \"terms\": {},\n \"resources\": {},\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"program": "bprog_R8mK2pQ9xL4s",
"provider": "benpr_8oWZpQ2rL4sk",
"name": "UnitedHealthcare PPO — Gold",
"type": "medical",
"coverages": ["employee_only", "family"]
}
{
"id": "benpl_V6nP3qR9tY2m",
"object": "benefit.plan",
"program": "bprog_R8mK2pQ9xL4s",
"provider": "benpr_8oWZpQ2rL4sk",
"entity": "ent_8oWZpQ2rL4sk",
"name": "UnitedHealthcare PPO — Gold",
"type": "medical",
"country": null,
"network": null,
"status": "draft",
"coverages": ["employee_only", "family"],
"eligibility": null,
"contribution": {},
"terms": {},
"resources": {},
"starts": null,
"ends": null,
"metadata": {},
"created": "2026-05-29T12:00:00Z",
"updated": "2026-05-29T12:00:00Z"
}
Parameters
ID of the program the plan belongs to.
ID of the carrier (benefit provider).
Human-readable plan name.
Benefit category. One of
medical, dental, vision, life, disability,
retirement, or other.Coverage tiers the plan offers, e.g.
["employee_only", "family"].ISO-3166 country the plan is offered in. Omit for a global plan.
Network name or type (e.g.
ppo, hmo).Plan status. One of
draft, active, or inactive. Defaults to draft.First day the plan is in effect.
Last day the plan is in effect.
CEL expression deciding which workers may elect this plan, evaluated against
the worker shape. Omit to offer it to anyone eligible for the program.
Employer cost-sharing policy, by coverage tier.
Display summary of plan terms.
Plan materials — links and document references.
Set of key-value pairs attached to the plan.
Returns
Returns the created Benefit plan object.{
"program": "bprog_R8mK2pQ9xL4s",
"provider": "benpr_8oWZpQ2rL4sk",
"name": "UnitedHealthcare PPO — Gold",
"type": "medical",
"coverages": ["employee_only", "family"]
}
{
"id": "benpl_V6nP3qR9tY2m",
"object": "benefit.plan",
"program": "bprog_R8mK2pQ9xL4s",
"provider": "benpr_8oWZpQ2rL4sk",
"entity": "ent_8oWZpQ2rL4sk",
"name": "UnitedHealthcare PPO — Gold",
"type": "medical",
"country": null,
"network": null,
"status": "draft",
"coverages": ["employee_only", "family"],
"eligibility": null,
"contribution": {},
"terms": {},
"resources": {},
"starts": null,
"ends": null,
"metadata": {},
"created": "2026-05-29T12:00:00Z",
"updated": "2026-05-29T12:00:00Z"
}
Was this page helpful?
⌘I