Skip to main content
PATCH
/
groups
/
{groupId}
/
members
/
{memberId}
Update or terminate a member
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",
  "cobra": true
}
'
import requests

url = "https://www.getprescience.com/api/partner/v1/groups/{groupId}/members/{memberId}"

payload = {
"status": "terminated",
"terminationDate": "2026-11-15",
"cobra": True
}
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', cobra: true})
};

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',
'cobra' => true
]),
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 \"cobra\": true\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 \"cobra\": true\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 \"cobra\": true\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",
  "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": "Rate limit exceeded. Retry after 12 seconds."
}
{
"error": "server_error",
"message": "Internal error. The request was not applied."
}

Authorizations

Authorization
string
header
required

Partner API key. psk_test_<32 hex> for test mode, psk_live_<32 hex> for live mode. Keys are stored hashed and cannot be recovered; store them in your secrets manager on issue.

Path Parameters

groupId
string
required

Group ID, e.g. grp_8c2f41d09a3e.

Pattern: ^grp_[0-9a-f]{12}$
memberId
string
required

Census member ID, e.g. mem_92e4b7a1d0c6.

Pattern: ^mem_[0-9a-f]{12}$

Body

application/json

Partial update: send only the fields you are changing. Terminate with status: "terminated" plus optional terminationDate and cobra.

externalId
string

Your employee ID. Used as the upsert key when email is absent.

Example:

"emp_0001"

firstName
string
Example:

"Jordan"

lastName
string
Example:

"Reyes"

email
string<email>

Upsert key when present.

Example:

"jordan@acme.com"

dob
string<date>
Example:

"1992-03-14"

age
integer

Alternative to dob. One of the two is required.

Example:

34

zip
string

5-digit home ZIP. Drives the area factor in rating.

Pattern: ^[0-9]{5}$
Example:

"94110"

sexAtBirth
enum<string>
Available options:
male,
female,
other
employmentType
enum<string>
Available options:
full_time,
part_time,
contractor
hireDate
string<date>
Example:

"2024-03-01"

status
enum<string>
default:active
Available options:
active,
terminated
dependents
object[]
Maximum array length: 6
terminationDate
string<date>
Example:

"2026-11-15"

cobra
boolean

Offer COBRA continuation on termination.

Response

Updated member.

One employee. zip plus one of dob | age is enough to quote. firstName, lastName, and email are additionally required (per active member) at enrollment time.

dob
string<date>
required
Example:

"1992-03-14"

zip
string
required

5-digit home ZIP. Drives the area factor in rating.

Pattern: ^[0-9]{5}$
Example:

"94110"

memberId
string
required

Server-assigned ID. Use it for PATCH /groups/{groupId}/members/{memberId}.

Example:

"mem_c4a91f27e83d"

externalId
string

Your employee ID. Used as the upsert key when email is absent.

Example:

"emp_0001"

firstName
string
Example:

"Jordan"

lastName
string
Example:

"Reyes"

email
string<email>

Upsert key when present.

Example:

"jordan@acme.com"

age
integer

Alternative to dob. One of the two is required.

Example:

34

sexAtBirth
enum<string>
Available options:
male,
female,
other
employmentType
enum<string>
Available options:
full_time,
part_time,
contractor
hireDate
string<date>
Example:

"2024-03-01"

status
enum<string>
default:active
Available options:
active,
terminated
dependents
object[]
Maximum array length: 6