One policy, with invoices and documents
curl -X GET "https://api.valjeanspecialty.com/api/agent/v1/policies/POLICY_ID" \ -H "Authorization: Bearer $VALJEAN_KEY"const res = await fetch("https://api.valjeanspecialty.com/api/agent/v1/policies/POLICY_ID", { method: "GET", headers: { Authorization: `Bearer ${process.env.VALJEAN_KEY}`, },});console.log(await res.json());import os, requests
res = requests.get( "https://api.valjeanspecialty.com/api/agent/v1/policies/POLICY_ID", headers={"Authorization": f"Bearer {os.environ['VALJEAN_KEY']}"},)print(res.json())The policy, the invoices Valjean has sent for it, and its binder, policy and endorsement documents.
Any key (read or read-and-submit).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Policy id.
Responses
Section titled “Responses”OK
object
Surplus lines tax and stamping fee.
Your agency’s commission on the policy, in dollars.
True when the policy document is on file.
object
object
“file”: the submission’s documents. “carrier”: presented quotes, binders, policies, endorsements.
Document type, or the carrier document kind (quote, binder, policy, endorsement).
Example
{ "status": "bound", "invoices": [ { "status": "sent" } ], "documents": [ { "source": "file" } ]}Headers
Section titled “Headers”Example
"per-key";q=120;w=60The rate limit for this key, as an IETF RateLimit-Policy: 120 requests (q) per 60-second window (w), counted across all of Valjean’s servers. Over it, you get 429 with Retry-After.
Key or token missing, wrong, expired or revoked (unauthorized). Don’t retry: get a new key or sign in again.
object
object
Machine-readable code, e.g. invalid_request, read_only, not_found, closed, rate_limited.
Plain-English explanation you can show a person.
Validation problems, as “field: problem” (400 invalid_request only).
Example
{ "error": { "code": "unauthorized", "message": "This API key isn't valid. Ask your Valjean broker for a new one." }}Not allowed: read_only (a read key tried to submit), agency_not_active (no signed broker agreement), not_offered (instant quotes are off), forbidden (API access off for the agency). Don’t retry.
object
object
Machine-readable code, e.g. invalid_request, read_only, not_found, closed, rate_limited.
Plain-English explanation you can show a person.
Validation problems, as “field: problem” (400 invalid_request only).
Example
{ "error": { "code": "read_only", "message": "This key can read only. Ask your Valjean broker for a key that can submit." }}Not found, or not your agency’s (not_found). The API never says which.
object
object
Machine-readable code, e.g. invalid_request, read_only, not_found, closed, rate_limited.
Plain-English explanation you can show a person.
Validation problems, as “field: problem” (400 invalid_request only).
Example
{ "error": { "code": "not_found", "message": "Submission not found." }}Too many requests (rate_limited): 120 a minute per key, 30 a minute per IP on public endpoints, counted across all of Valjean’s servers. Wait Retry-After seconds.
object
object
Machine-readable code, e.g. invalid_request, read_only, not_found, closed, rate_limited.
Plain-English explanation you can show a person.
Validation problems, as “field: problem” (400 invalid_request only).
Example
{ "error": { "code": "rate_limited", "message": "Too many requests. Try again in a minute." }}Headers
Section titled “Headers”Example
60Seconds to wait.
Something went wrong on Valjean’s side (server_error). Safe to retry later; creates are idempotent with client_reference or an Idempotency-Key header.
object
object
Machine-readable code, e.g. invalid_request, read_only, not_found, closed, rate_limited.
Plain-English explanation you can show a person.
Validation problems, as “field: problem” (400 invalid_request only).
Example
{ "error": { "code": "server_error", "message": "Something went wrong. Try again shortly." }}
