What is synchronous
These return the outcome, and you can act on the response directly:- Creating and editing customers, policies and assets.
POST /policies/{policyId}/calculate-quoteandPOST /policies/{policyId}/quote— pricing is computed during the request. A price that cannot be produced fails the call or is recorded as a quote failure; it does not arrive later.POST /policies/{policyId}/confirm— validation is immediate.- Registry lookups:
GET /siren,GET /vehicle-information/*,GET /address-autocomplete/suggest. These need an actor with the right permissions —GET /sirenis refused to an anonymous session (403), so a public funnel collects a typed SIRET and lets enrichment happen server-side on thePATCHinstead.
Products whose pricing the carrier keeps — rather than delegating it to a Korint pricing engine — are the
exception. Their quote depends on an external response, so treat it as a step whose result you re-read
rather than one you assume.
What you have to observe
Signature
POST /policies/{policyId}/signature creates the request and returns the signers with their links. It
does not wait for anyone to sign. Poll the signature requests for the policy:
Response
GET /policies/{policyId} is the better signal
for “may I proceed?”, and the signature requests are the better signal for “who still has to sign?”.
A signer who has lost the email needs a fresh nudge rather than a new request:
POST /signature/{signatureId}/policy/{policyId}/signers/{signerCustomerId}/resend, or fetch their
link again with the matching /link endpoint.
Signature is a human action: expect minutes to days.
A payment method after the browser setup
Confirming a SetupIntent happens between the customer’s browser and Stripe. We learn about it from Stripe’s webhook, so the payment method appears on our side shortly after — not at the moment the browser reports success. ReadGET /customers/{customerId}/payment-methods until the method appears. If it never does, the
setup did not actually succeed; re-check the browser-side result rather than retrying the secret.
Documents
POST /policies/{policyId}/documents returns an upload URL; you then upload the file to that URL
directly. The document exists once that upload finishes, but nothing has looked at it yet.
Processing is a call you make, and it is the exception to this page: GET /documents/validate?key=…
scans, classifies and extracts, streaming progress as Server-Sent Events. Consume the stream instead of
polling. Settled results live on GET /policies/{policyId}/documents/validity and
GET /policies/{policyId}/document-extractions.
Fields configured with autoFill are populated from a successful extraction (see
Read the product configuration),
so re-read the entity rather than assuming your earlier values survived.
Coming into force
Activation is driven by time and by payment, not by your call. A signed contract comes into force when its start date arrives, and — on products withrequireFirstPaymentToActivate — once the first
premium has been collected. GET /policies/{policyId} carries the state. A future-dated contract sits
signed-but-not-in-force until its start date.

