Changelog
Skadi's contract version is date-based (YYYY-MM-DD), pinned via
the Skadi-API-Version header. Breaking changes ship as a new
dated entry; the prior version remains supported for at least 12 months
before sunset.
Platform notices
2026-05-10 Brand rename: Odin → Skadi (Skadi Specialty Insurance Co. under Odin Holdings)
The rename applies across all contract versions — it is a platform change, not a new pinnable version. Old names are no longer recognized.
- Breaking — protocol headers renamed.
Odin-API-Version→Skadi-API-Version(request);Odin-Deprecation→Skadi-DeprecationandOdin-Request-Id→Skadi-Request-Id(responses);Odin-Webhook-Event-Id/Odin-Webhook-Event-Type/Odin-Webhook-Signature/Odin-Webhook-Timestamp→ theSkadi-Webhook-*equivalents. - Collections renamed.
Odin-Partner-API-{HMAC,OAuth}.postman_collection.json→Skadi-Partner-API-{HMAC,OAuth}.postman_collection.json;Odin-Sandbox.postman_environment.json→Skadi-Sandbox.postman_environment.json. Download the new files from the developer dashboard. - Partner SDK identifiers.
OdinClient→SkadiClient,OdinClientOptions→SkadiClientOptions,OdinApiError→SkadiApiError,OdinApiVersion→SkadiApiVersion. Imports must be updated; runtime behavior is unchanged. - PDF filename convention.
Odin_Quote_…→Skadi_Quote_…,Odin_HistoricalDec_…→Skadi_HistoricalDec_…in content-disposition headers and the filenames inside webhook payloads. - Skadi Specialty Insurance Co. is the operating carrier; Odin Holdings is the (legal-footer-only) parent. API key prefixes (
odn_live_*/odn_sb_*) are unchanged.
Active versions
2026-04-25 current Quote-then-bind transaction lifecycle
- Added quote-then-bind transaction endpoints:
POST /endorsements,/cancellations,/extensions,/renewals,/rewrites,/audits,/oos-rebasesplus/{id}/bindbinders. POST /process-transactionnarrowed toreinstatement+non_renewal; legacy kinds return410 gonewithredirect_endpoint.agency_idrequired onPOST /create-submission.- OOS rebase now supports cancel/reinstate downstream.
Backwards-compatible additions under the 2026-04-25 contract (no version bump):
- Added
POST /endorsements/bulk— create-and-bind up to 50 endorsements in one call, with per-itemidempotency_keyand partial-success (succeeded[]/failed[]) results. Scopewrite:transactions. - Declared the
write:documentsscope, gating partner document export (POST /api/partner/quote-pdf, content-negotiated PDF / ACORD 137 / ACORD 75).
Shipped 2026-04-28 — clearance disposition matrix (additive):
POST /clearance-request— every match inmatched_in_partner_book[]now includes a structured per-hit disposition derived from the M-tier × G-tier × same-agency × renewal-window matrix. New fields:match_tier(M1–M4),matched_grade,matched_expiration_date,same_agency,days_to_expiry,disposition,severity(per-hit),label,reasoning,allowed_decisions[],decision_authority,effective_grade,effective_grade_code.POST /clearance-request— new top-level fieldcarrier_internal_match_summarysurfaces the worst-case structural disposition for cross-tenant matches without leaking PII (no submission ids, broker names, or premium detail).- The disposition matrix is now the canonical decision logic, replacing the legacy confidence-only severity heuristic. Indications never claim the market (G1 always cleared cross-agency); bound-in-renewal-window matches surface as
renewal_opportunityrather than blocked; BOR letters required for cross-agency mid-term displacement. - Existing request-level severity fields (
block/manual_review/advisory/clear) are preserved; the finer per-hit severity addsinfo. No integration changes required.
Shipped 2026-04-29 — per-match clearance resolutions + same-agency auto-merge (additive):
- Added
POST /clearance-match-resolve— persist a per-hit resolution against aclearance_matchrow. Resolutions:merged,opened_existing,linked_related,route_renewal,not_related,cleared_release,cleared_renewal_authorization,cleared_indication,blocking_pending. Idempotent onIdempotency-Key; admin-only kinds require a non-empty note. Multi-hit clearance results can carry mixed resolutions across hits. POST /create-submission— same-agency auto-merge: the server now short-circuits when (agency_id+ lowercased FEIN) collides with a non-bound, non-renewal-window draft from your own agency. The duplicate is never persisted; the response returns the existingsubmission_id+submission_number, so callers are naturally idempotent on FEIN within an agency. A synthetic clearance match +mergedresolution is recorded for audit.- The existing
clearancescope covers/clearance-match-resolve. No integration changes required.
Shipped 2026-06-15 — canonical domain migration to skadispecialty.com:
- The API now serves from
skadispecialty.comhosts: developer portal athttps://developers.skadispecialty.com, app/document endpoints athttps://app.skadispecialty.com, contact/legal athttps://skadispecialty.com. The legacy*.vercel.apphosts 301-redirect to these and remain valid for ~90 days. The partner Edge API base URL is unchanged. - RFC 7807 problem-type URIs moved from
https://skadi.example/api/problems/*tohttps://skadispecialty.com/api/problems/*. These remain opaque identifiers — match on the final path segment (e.g.rate-limit-exceeded), thetitle, orstatus, never the full URL. If you currently string-match the fulltypeURI, update it. - OAuth 2.0
issclaim moved fromhttps://skadi.exampletohttps://skadispecialty.com. Tokens minted with either issuer are accepted during the migration window; the legacy issuer will be dropped after the window. If you validateiss, accept both now and switch to the new value before the window closes. - No request shapes, response shapes, scopes, or endpoint paths changed. No contract version bump.
Spec changes: not available (pre-dates the published OpenAPI spec) .
2026-04-23 supported Tier 2 read endpoints
- Added Tier 2 read endpoints:
/get-submissions,/get-quotes,/get-claims,/get-documents,/get-reports. - Pure additions — backward compatible with
2026-04-22clients.
Spec changes: not available (pre-dates the published OpenAPI spec) .
2026-04-22 supported Initial public contract
- Initial public contract: HMAC + OAuth Client Credentials auth, RFC 7807 errors,
Idempotency-Keyheader,Skadi-API-Versionpin. - Endpoints:
/oauth-token,/rate-quote,/appetite-check,/hazard-lookup,/clearance-request,/create-submission,/process-transaction.
Spec changes: not available (pre-dates the published OpenAPI spec) .
Deprecation policy
A version enters deprecation when its successor is published. The
deprecated version then carries
RFC 8594 Deprecation + Sunset headers on every response.
It remains fully supported for at least 12 months before the sunset date.
After sunset, requests pinning the deprecated version return
410 gone
(problem type https://skadispecialty.com/api/problems/gone).
See the full policy + breaking-change taxonomy in PARTNER_API.md.