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.ID of the entity (employer) the program belongs to.
Human-readable program name.
Human renewal label for the program.
Start date for the program year.
End date for the program year.
Program status. One of
draft, open, or closed. Defaults to draft.CEL expression deciding which workers the program is offered to, evaluated
against the worker shape. Omit for manual assignment.
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