Create a benefit program
curl --request POST \
--url https://api.plane.com/v1/benefit/programs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"entity": "<string>",
"name": "<string>",
"year": 123,
"starts": "<string>",
"ends": "<string>",
"status": "<string>",
"eligibility": "<string>",
"metadata": {}
}
'import requests
url = "https://api.plane.com/v1/benefit/programs"
payload = {
"entity": "<string>",
"name": "<string>",
"year": 123,
"starts": "<string>",
"ends": "<string>",
"status": "<string>",
"eligibility": "<string>",
"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({
entity: '<string>',
name: '<string>',
year: 123,
starts: '<string>',
ends: '<string>',
status: '<string>',
eligibility: '<string>',
metadata: {}
})
};
fetch('https://api.plane.com/v1/benefit/programs', 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/programs",
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([
'entity' => '<string>',
'name' => '<string>',
'year' => 123,
'starts' => '<string>',
'ends' => '<string>',
'status' => '<string>',
'eligibility' => '<string>',
'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/programs"
payload := strings.NewReader("{\n \"entity\": \"<string>\",\n \"name\": \"<string>\",\n \"year\": 123,\n \"starts\": \"<string>\",\n \"ends\": \"<string>\",\n \"status\": \"<string>\",\n \"eligibility\": \"<string>\",\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/programs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"entity\": \"<string>\",\n \"name\": \"<string>\",\n \"year\": 123,\n \"starts\": \"<string>\",\n \"ends\": \"<string>\",\n \"status\": \"<string>\",\n \"eligibility\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.com/v1/benefit/programs")
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 \"entity\": \"<string>\",\n \"name\": \"<string>\",\n \"year\": 123,\n \"starts\": \"<string>\",\n \"ends\": \"<string>\",\n \"status\": \"<string>\",\n \"eligibility\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"entity": "ent_8oWZpQ2rL4sk",
"name": "2027 Benefits",
"year": 2027,
"starts": "2027-01-01",
"ends": "2027-12-31"
}
{
"id": "bprog_R8mK2pQ9xL4s",
"object": "benefit.program",
"entity": "ent_8oWZpQ2rL4sk",
"name": "2027 Benefits",
"year": 2027,
"starts": "2027-01-01",
"ends": "2027-12-31",
"status": "draft",
"eligibility": null,
"metadata": {},
"created": "2026-05-29T12:00:00Z",
"updated": "2026-05-29T12:00:00Z"
}
Programs
Create a benefit program
Create a benefits program for a plan year.
POST
/
v1
/
benefit
/
programs
Create a benefit program
curl --request POST \
--url https://api.plane.com/v1/benefit/programs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"entity": "<string>",
"name": "<string>",
"year": 123,
"starts": "<string>",
"ends": "<string>",
"status": "<string>",
"eligibility": "<string>",
"metadata": {}
}
'import requests
url = "https://api.plane.com/v1/benefit/programs"
payload = {
"entity": "<string>",
"name": "<string>",
"year": 123,
"starts": "<string>",
"ends": "<string>",
"status": "<string>",
"eligibility": "<string>",
"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({
entity: '<string>',
name: '<string>',
year: 123,
starts: '<string>',
ends: '<string>',
status: '<string>',
eligibility: '<string>',
metadata: {}
})
};
fetch('https://api.plane.com/v1/benefit/programs', 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/programs",
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([
'entity' => '<string>',
'name' => '<string>',
'year' => 123,
'starts' => '<string>',
'ends' => '<string>',
'status' => '<string>',
'eligibility' => '<string>',
'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/programs"
payload := strings.NewReader("{\n \"entity\": \"<string>\",\n \"name\": \"<string>\",\n \"year\": 123,\n \"starts\": \"<string>\",\n \"ends\": \"<string>\",\n \"status\": \"<string>\",\n \"eligibility\": \"<string>\",\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/programs")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"entity\": \"<string>\",\n \"name\": \"<string>\",\n \"year\": 123,\n \"starts\": \"<string>\",\n \"ends\": \"<string>\",\n \"status\": \"<string>\",\n \"eligibility\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.com/v1/benefit/programs")
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 \"entity\": \"<string>\",\n \"name\": \"<string>\",\n \"year\": 123,\n \"starts\": \"<string>\",\n \"ends\": \"<string>\",\n \"status\": \"<string>\",\n \"eligibility\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"entity": "ent_8oWZpQ2rL4sk",
"name": "2027 Benefits",
"year": 2027,
"starts": "2027-01-01",
"ends": "2027-12-31"
}
{
"id": "bprog_R8mK2pQ9xL4s",
"object": "benefit.program",
"entity": "ent_8oWZpQ2rL4sk",
"name": "2027 Benefits",
"year": 2027,
"starts": "2027-01-01",
"ends": "2027-12-31",
"status": "draft",
"eligibility": null,
"metadata": {},
"created": "2026-05-29T12:00:00Z",
"updated": "2026-05-29T12:00:00Z"
}
Parameters
Programs are created as drafts and opened when enrollment should begin.string
required
ID of the entity (employer) the program belongs to.
string
required
Human-readable program name.
integer
required
Human renewal label for the program.
date
Start date for the program year.
date
End date for the program year.
string
Program status. One of
draft, open, or closed. Defaults to draft.string
CEL expression deciding which workers the program is offered to, evaluated
against the worker shape. Omit for manual assignment.
object
Set of key-value pairs attached to the program.
Returns
Returns the created Benefit program object.{
"entity": "ent_8oWZpQ2rL4sk",
"name": "2027 Benefits",
"year": 2027,
"starts": "2027-01-01",
"ends": "2027-12-31"
}
{
"id": "bprog_R8mK2pQ9xL4s",
"object": "benefit.program",
"entity": "ent_8oWZpQ2rL4sk",
"name": "2027 Benefits",
"year": 2027,
"starts": "2027-01-01",
"ends": "2027-12-31",
"status": "draft",
"eligibility": null,
"metadata": {},
"created": "2026-05-29T12:00:00Z",
"updated": "2026-05-29T12:00:00Z"
}
Was this page helpful?
⌘I