curl --request GET \
--url https://www.getprescience.com/api/partner/v1/groups/{groupId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.getprescience.com/api/partner/v1/groups/{groupId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.getprescience.com/api/partner/v1/groups/{groupId}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.getprescience.com/api/partner/v1/groups/{groupId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.getprescience.com/api/partner/v1/groups/{groupId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.getprescience.com/api/partner/v1/groups/{groupId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "grp_8c2f41d09a3e",
"mode": "test",
"status": "quoted",
"company_name": "Acme Inc",
"domain": "acme.com",
"external_id": "co_4821",
"address": {
"line1": "548 Market St",
"city": "San Francisco",
"state": "CA",
"zip": "94104"
},
"contact": {
"name": "Dana Park",
"email": "dana@acme.com",
"title": "Head of People"
},
"current_coverage": {
"plan_type": "fully_insured",
"carrier": "Anthem",
"pepm_cents": 80000,
"renewal_date": "2026-09-01"
},
"census_member_count": 12,
"company_state": null,
"created_at": "2026-06-10T17:04:11Z",
"updated_at": "2026-06-10T17:22:05Z",
"market_plans": 0,
"rating_zip": "94104",
"pricing": "done",
"enrolled": false,
"benefits_admin": "prescience",
"latest_quote": {
"quote_id": "qt_5b9e2c7f10ad",
"status": "ready",
"created_at": "2026-06-10T17:22:05Z",
"quote_pepm_cents": 50000,
"quote_annual_cents": 2400000,
"plans_available": [
"diamond",
"value"
]
}
}Get a group
curl --request GET \
--url https://www.getprescience.com/api/partner/v1/groups/{groupId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.getprescience.com/api/partner/v1/groups/{groupId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.getprescience.com/api/partner/v1/groups/{groupId}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.getprescience.com/api/partner/v1/groups/{groupId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.getprescience.com/api/partner/v1/groups/{groupId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.getprescience.com/api/partner/v1/groups/{groupId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "grp_8c2f41d09a3e",
"mode": "test",
"status": "quoted",
"company_name": "Acme Inc",
"domain": "acme.com",
"external_id": "co_4821",
"address": {
"line1": "548 Market St",
"city": "San Francisco",
"state": "CA",
"zip": "94104"
},
"contact": {
"name": "Dana Park",
"email": "dana@acme.com",
"title": "Head of People"
},
"current_coverage": {
"plan_type": "fully_insured",
"carrier": "Anthem",
"pepm_cents": 80000,
"renewal_date": "2026-09-01"
},
"census_member_count": 12,
"company_state": null,
"created_at": "2026-06-10T17:04:11Z",
"updated_at": "2026-06-10T17:22:05Z",
"market_plans": 0,
"rating_zip": "94104",
"pricing": "done",
"enrolled": false,
"benefits_admin": "prescience",
"latest_quote": {
"quote_id": "qt_5b9e2c7f10ad",
"status": "ready",
"created_at": "2026-06-10T17:22:05Z",
"quote_pepm_cents": 50000,
"quote_annual_cents": 2400000,
"plans_available": [
"diamond",
"value"
]
}
}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}$Response
The group.
- Option 1
- Option 2
A group as a broker reads it with GET /groups and GET /groups/{groupId}: the group, and what a broker adds to it.
"grp_8c2f41d09a3e"
test, live Lifecycle: created -> census_received -> quoted -> enrolled -> active (active = company flipped to prod by Prescience).
created, census_received, quoted, enrolled, active "Acme Inc"
"acme.com"
Always 0: plans sent in market_plans are no longer used.
0
12
The headquarters ZIP the group is priced from.
"94110"
Where pricing stands: done once rates are in, failed if pricing failed. null before the first pricing run.
"done"
true once the group is enrolled.
Who runs benefits administration for your account.
prescience, partner The group's latest quote, or null before the first one.
Show child attributes
Show child attributes
Registered legal name, when you sent one.
Your internal employer ID.
"co_4821"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Optional historical coverage metadata. It is not required for market-rate quotes.
Show child attributes
Show child attributes
Present once you have set any plan design field.
Show child attributes
Show child attributes
Present once the client's move-forward request was recorded with POST /groups/{groupId}/move-forward.
Show child attributes
Show child attributes
Present once the client's move-forward request was recorded: the carrier and plan to submit for enrollment, and where enrollment stands.
Show child attributes
Show child attributes
null until enrolled, then sandbox, then prod once Prescience activates the group.
sandbox, prod, null