Sovereign Foundry
Core API
A filed, versioned policy administration core with the front end left to you. Rating, forms, signatures, issuance, billing and earned premium stay inside the core; every screen your buyers touch is yours to build.
sae_test_, live keys with sae_live_.curl -X POST https://sovereignautoengine.com/api/public/v1/sessions \
-H "Authorization: Bearer sae_test_…" \
-H "content-type: application/json" \
-d '{}'The licensee is resolved from the key itself — never from the request body — so a key can only ever see and write its own tenant's records. Keys are stored as a hash; the full value is shown once at creation. Requests are rate limited and every call is metered.
Quote to bind
One sequence, in order. The session id plus the bind token returned with the rate are the credentials for every step after quoting.
/api/public/v1/sessionsscope: quote{ "agency_id": null }Opens a checkout session against the filing version effective today. Returns the filed constraints your UI should render.
/api/public/v1/quotesscope: quote{ "session_id": "…", "answers": { "zip": "37013", "vehicles": [...], "drivers": [...] } }Rates 6- and 12-month terms through the filed path, saves a real quote number, and returns a single-use bind_token. Ineligible risks come back with reasons instead of a price.
/api/public/v1/quotes/termscope: quote{ "session_id": "…", "bind_token": "…", "term_months": 6 }Pins the term the buyer chose. Premium is recomputed server-side from the quote's own stored input.
/api/public/v1/applicationsscope: quote{ "session_id": "…", "bind_token": "…", "quote_id": "…", "term_months": 6, "payment_plan_code": "…" }Creates the application staging record for the selected quote and pay plan.
/api/public/v1/applications/{id}/updatescope: quote{ "session_id": "…", "bind_token": "…", "email": "…", "phone": "…" }Applicant, driver and vehicle detail. Personally identifying values are encrypted at rest and returned masked.
/api/public/v1/applications/{id}/attestationsscope: bind{ "session_id": "…", "bind_token": "…", "accepted_codes": ["…"] }Records the statements the buyer accepted. Required statements must all be accepted.
/api/public/v1/applications/{id}/signature-stepscope: bind{ "session_id": "…", "bind_token": "…", "inline": true }Returns the signing step for this channel, honoring the carrier's gating rule (require before issuance, chase after, or off).
/api/public/v1/applications/{id}/amount-duescope: read{ "session_id": "…", "bind_token": "…" }Down payment, installment amount and count — always recomputed from the saved quote, never accepted from your app.
/api/public/v1/applications/{id}/bindscope: bind{ "session_id": "…", "bind_token": "…", "method": "card", "reference": "auth code" }Issues the policy: term, coverages, charges, earning schedule, cash and documents. Returns the policy number.
Reads
/api/public/v1/policiesscope: readRecent policies for your licensee.
/api/public/v1/policies/{id}scope: readPolicy header plus the masked insured profile.
/api/public/v1/policies/{id}/billingscope: readCharges, schedule, paid-to-date, balance and next due.
/api/public/v1/policies/{id}/documentsscope: readDocument artifacts produced for the policy.
/api/public/v1/whoamiConfirms which licensee and environment a key resolves to.
/api/public/v1/healthUnauthenticated liveness probe.
Webhooks
Subscribe an HTTPS endpoint per environment. Each delivery carries x-sovereign-timestamp and x-sovereign-signature: v1=…, an HMAC-SHA256 of {timestamp}.{body} using that endpoint's secret. Verify before you trust the body.
quote.createdA quote was rated and saved.application.attestedThe buyer accepted the required statements.signature.completedEvery required signature is on file.policy.boundA policy was issued — from any channel, not just the API.payment.postedCash was applied to a policy.policy.cancelledA policy moved to cancelled.Errors
{ "error": { "code": "insufficient_scope", "message": "…" }, "request_id": "req_…" }401 bad key · 403 scope or account · 404 unknown record or route · 409 nothing effective to quote · 429 rate limited. Retry only 429 and 5xx, with backoff.
Going live
Live keys unlock only after the readiness check passes: a sandbox key that has real traffic, a quote and a bind completed through the API, a subscribed webhook endpoint, and a filing version effective today. Run it from Setup → Developer API → Go live.