What changed on your files
curl -X GET "https://api.valjeanspecialty.com/api/agent/v1/events" \ -H "Authorization: Bearer $VALJEAN_KEY"const res = await fetch("https://api.valjeanspecialty.com/api/agent/v1/events", { 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/events", headers={"Authorization": f"Bearer {os.environ['VALJEAN_KEY']}"},)print(res.json())Every change on your agency’s files, oldest first. Pass after (the next_after from last time) for only newer events; with neither after nor since you get the last 7 days. Events are kept 90 days. type filters, comma-separated, and accepts a prefix like bind.*.
Any key (read or read-and-submit).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Responses
Section titled “Responses”OK
object
object
Cursor: pass the last one as ?after= to get only newer events.
Depends on type; see the webhooks section. Status events add status_text in plain words.
object
Example
{ "events": [ { "id": 41, "created_at": "2026-11-02T14:20:00Z", "type": "submission.status_changed", "submission_id": "6f2a1c9e-4b3d-4e8a-9c21-7d4e5f6a8b90", "data": { "status": "marketing", "previous": "needs_info", "status_text": "With insurance markets for review" } } ], "next_after": 41, "has_more": false}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.
Fix the request and send it again (invalid_request, invalid_json).
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": "invalid_request", "message": "Check the request.", "issues": [ "insured.state: Too small: expected string to have >=2 characters" ] }}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." }}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." }}
