curl --request PATCH \
--url https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"status": "terminated",
"terminationDate": "2026-11-15",
"coverageLossDate": "2026-11-30",
"cobra": true,
"mailingAddressLine1": "2140 Folsom St",
"mailingCity": "San Francisco",
"mailingState": "CA",
"mailingPostalCode": "94110"
}
'import requests
url = "https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}"
payload = {
"status": "terminated",
"terminationDate": "2026-11-15",
"coverageLossDate": "2026-11-30",
"cobra": True,
"mailingAddressLine1": "2140 Folsom St",
"mailingCity": "San Francisco",
"mailingState": "CA",
"mailingPostalCode": "94110"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
status: 'terminated',
terminationDate: '2026-11-15',
coverageLossDate: '2026-11-30',
cobra: true,
mailingAddressLine1: '2140 Folsom St',
mailingCity: 'San Francisco',
mailingState: 'CA',
mailingPostalCode: '94110'
})
};
fetch('https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}', 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://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'status' => 'terminated',
'terminationDate' => '2026-11-15',
'coverageLossDate' => '2026-11-30',
'cobra' => true,
'mailingAddressLine1' => '2140 Folsom St',
'mailingCity' => 'San Francisco',
'mailingState' => 'CA',
'mailingPostalCode' => '94110'
]),
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://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}"
payload := strings.NewReader("{\n \"status\": \"terminated\",\n \"terminationDate\": \"2026-11-15\",\n \"coverageLossDate\": \"2026-11-30\",\n \"cobra\": true,\n \"mailingAddressLine1\": \"2140 Folsom St\",\n \"mailingCity\": \"San Francisco\",\n \"mailingState\": \"CA\",\n \"mailingPostalCode\": \"94110\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"terminated\",\n \"terminationDate\": \"2026-11-15\",\n \"coverageLossDate\": \"2026-11-30\",\n \"cobra\": true,\n \"mailingAddressLine1\": \"2140 Folsom St\",\n \"mailingCity\": \"San Francisco\",\n \"mailingState\": \"CA\",\n \"mailingPostalCode\": \"94110\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"status\": \"terminated\",\n \"terminationDate\": \"2026-11-15\",\n \"coverageLossDate\": \"2026-11-30\",\n \"cobra\": true,\n \"mailingAddressLine1\": \"2140 Folsom St\",\n \"mailingCity\": \"San Francisco\",\n \"mailingState\": \"CA\",\n \"mailingPostalCode\": \"94110\"\n}"
response = http.request(request)
puts response.read_body{
"memberId": "mem_92e4b7a1d0c6",
"externalId": "emp_0009",
"firstName": "Tom",
"lastName": "Becker",
"email": "tom@acme.com",
"dob": "1974-02-27",
"zip": "94110",
"employmentType": "full_time",
"hireDate": "2022-01-10",
"status": "terminated",
"terminationDate": "2026-11-15",
"coverageLossDate": "2026-11-30",
"qualifyingEventType": "termination",
"mailingAddressLine1": "2140 Folsom St",
"mailingCity": "San Francisco",
"mailingState": "CA",
"mailingPostalCode": "94110",
"cobra": true,
"dependents": [
{
"relationship": "spouse",
"dob": "1976-05-19",
"name": "Anja Becker"
}
]
}{
"error": "invalid_request",
"message": "terminationDate must be YYYY-MM-DD.",
"details": [
{
"field": "terminationDate",
"message": "terminationDate must be YYYY-MM-DD"
}
]
}{
"error": "unauthorized",
"message": "Provide a valid partner API key as `Authorization: Bearer psk_...`."
}{
"error": "not_found",
"message": "No group grp_8c2f41d09a3e found."
}{
"error": "rate_limited",
"message": "Too many requests. Please retry later."
}{
"error": "server_error",
"message": "Internal error. The request was not applied."
}Update or terminate a member
Updates member fields. Terminate with { "status": "terminated", "terminationDate": "...", "cobra": true }. After enrollment, changes propagate to the live company census. cobra: true starts the notice and election workflow; coverage remains inactive until the individual elects and the required premium is recorded as paid.
curl --request PATCH \
--url https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"status": "terminated",
"terminationDate": "2026-11-15",
"coverageLossDate": "2026-11-30",
"cobra": true,
"mailingAddressLine1": "2140 Folsom St",
"mailingCity": "San Francisco",
"mailingState": "CA",
"mailingPostalCode": "94110"
}
'import requests
url = "https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}"
payload = {
"status": "terminated",
"terminationDate": "2026-11-15",
"coverageLossDate": "2026-11-30",
"cobra": True,
"mailingAddressLine1": "2140 Folsom St",
"mailingCity": "San Francisco",
"mailingState": "CA",
"mailingPostalCode": "94110"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
status: 'terminated',
terminationDate: '2026-11-15',
coverageLossDate: '2026-11-30',
cobra: true,
mailingAddressLine1: '2140 Folsom St',
mailingCity: 'San Francisco',
mailingState: 'CA',
mailingPostalCode: '94110'
})
};
fetch('https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}', 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://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'status' => 'terminated',
'terminationDate' => '2026-11-15',
'coverageLossDate' => '2026-11-30',
'cobra' => true,
'mailingAddressLine1' => '2140 Folsom St',
'mailingCity' => 'San Francisco',
'mailingState' => 'CA',
'mailingPostalCode' => '94110'
]),
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://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}"
payload := strings.NewReader("{\n \"status\": \"terminated\",\n \"terminationDate\": \"2026-11-15\",\n \"coverageLossDate\": \"2026-11-30\",\n \"cobra\": true,\n \"mailingAddressLine1\": \"2140 Folsom St\",\n \"mailingCity\": \"San Francisco\",\n \"mailingState\": \"CA\",\n \"mailingPostalCode\": \"94110\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"terminated\",\n \"terminationDate\": \"2026-11-15\",\n \"coverageLossDate\": \"2026-11-30\",\n \"cobra\": true,\n \"mailingAddressLine1\": \"2140 Folsom St\",\n \"mailingCity\": \"San Francisco\",\n \"mailingState\": \"CA\",\n \"mailingPostalCode\": \"94110\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"status\": \"terminated\",\n \"terminationDate\": \"2026-11-15\",\n \"coverageLossDate\": \"2026-11-30\",\n \"cobra\": true,\n \"mailingAddressLine1\": \"2140 Folsom St\",\n \"mailingCity\": \"San Francisco\",\n \"mailingState\": \"CA\",\n \"mailingPostalCode\": \"94110\"\n}"
response = http.request(request)
puts response.read_body{
"memberId": "mem_92e4b7a1d0c6",
"externalId": "emp_0009",
"firstName": "Tom",
"lastName": "Becker",
"email": "tom@acme.com",
"dob": "1974-02-27",
"zip": "94110",
"employmentType": "full_time",
"hireDate": "2022-01-10",
"status": "terminated",
"terminationDate": "2026-11-15",
"coverageLossDate": "2026-11-30",
"qualifyingEventType": "termination",
"mailingAddressLine1": "2140 Folsom St",
"mailingCity": "San Francisco",
"mailingState": "CA",
"mailingPostalCode": "94110",
"cobra": true,
"dependents": [
{
"relationship": "spouse",
"dob": "1976-05-19",
"name": "Anja Becker"
}
]
}{
"error": "invalid_request",
"message": "terminationDate must be YYYY-MM-DD.",
"details": [
{
"field": "terminationDate",
"message": "terminationDate must be YYYY-MM-DD"
}
]
}{
"error": "unauthorized",
"message": "Provide a valid partner API key as `Authorization: Bearer psk_...`."
}{
"error": "not_found",
"message": "No group grp_8c2f41d09a3e found."
}{
"error": "rate_limited",
"message": "Too many requests. Please retry later."
}{
"error": "server_error",
"message": "Internal error. The request was not applied."
}Authorizations
Partner API key. psk_test_<32 hex> for test mode, psk_live_<32 hex> for live mode. Store them in your secrets manager on issue. Live keys are shown once; the scoped partner portal can show an active sandbox key again.
Path Parameters
Group ID, e.g. grp_8c2f41d09a3e.
^grp_[0-9a-f]{12}$Census member ID, e.g. mem_92e4b7a1d0c6.
^mem_[0-9a-f]{12}$Body
Partial update: send only the fields you are changing. Terminate with status: "terminated" and terminationDate; add cobra: true, coverageLossDate, and the mailing address to offer COBRA.
Your payroll's employee ID (Check Employee.id). Required at enrollment; the upsert key, and how payroll results find the employee.
"emp_0001"
"Jordan"
"Reyes"
Upsert key when present.
"jordan@acme.com"
"1992-03-14"
Alternative to dob. One of the two is required.
34
5-digit home ZIP. Drives the area factor in rating.
^[0-9]{5}$"94110"
male, female, other full_time, part_time, contractor "2024-03-01"
active, terminated "2026-11-15"
Offer COBRA continuation on termination. With status: "terminated", requires terminationDate, coverageLossDate, and the full mailing address.
Last day of employer coverage. Required for a COBRA termination.
"2026-11-30"
termination, hours_reduction, employee_death Optional non-work address for COBRA notices. Must not be on the employee's work email domain.
Household mailing address. Required for a COBRA termination, with mailingCity, mailingState, and mailingPostalCode.
"CA"
"94110"
Response
Updated member.
- Option 1
- Option 2
Partial update: send only the fields you are changing. Terminate with status: "terminated" and terminationDate; add cobra: true, coverageLossDate, and the mailing address to offer COBRA.
Required for every employee and dependent of a broker; a broker's member sent with only an age is rejected.
"1992-03-14"
5-digit home ZIP. Drives the area factor in rating.
^[0-9]{5}$"94110"
Server-assigned ID. Use it for PATCH /groups/{groupId}/members/{memberId}.
"mem_c4a91f27e83d"
Your payroll's employee ID (Check Employee.id). Required at enrollment; the upsert key, and how payroll results find the employee.
"emp_0001"
"Jordan"
"Reyes"
Upsert key when present.
"jordan@acme.com"
Alternative to dob. One of the two is required.
34
male, female, other full_time, part_time, contractor "2024-03-01"
active, terminated Optional household members already known to your platform.
6Show child attributes
Show child attributes
"2026-11-15"
Offer COBRA continuation on termination. With status: "terminated", requires terminationDate, coverageLossDate, and the full mailing address.
Last day of employer coverage. Required for a COBRA termination.
"2026-11-30"
termination, hours_reduction, employee_death Optional non-work address for COBRA notices. Must not be on the employee's work email domain.
Household mailing address. Required for a COBRA termination, with mailingCity, mailingState, and mailingPostalCode.
"CA"
"94110"
true when the employer marked this employee as waiving coverage in the iframe. They stay on the census.
Why the employee waived, when excludedFromQuote is true.