Finalize a domain purchase after the embedded payment completes
Finalize a domain purchase after the embedded payment completes: CustomDomain™ API reference. Covers parameters, request body, responses and error codes.
Verifies the session, registers the domain, captures the charge, and auto-connects the domain. Idempotent per session id (the Stripe webhook drives the same path server-side, so a closed tab never strands a paid session). 201 on first fulfillment, 200 on an idempotent replay. Exactly one caller fulfills a session: the first to claim its order registers the domain and captures the charge, and a caller that arrives while it is still working waits briefly, then gets that result or a 409 with code fulfillment_in_progress. A 409 never releases the authorization; retry the call, or read GET /v1/sell/orders/{id}, to see the outcome.
Authorization
widgetJWT Short-lived widget JWT minted server-side via POST /v1/tokens. Scoped to one application (and optionally one domain).
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/registrar/fulfill" \ -H "Content-Type: application/json" \ -d '{ "session_id": "string" }'{ "Domain": "string", "Registrar": "string", "RegOrderID": "string"}{ "Domain": "string", "Registrar": "string", "RegOrderID": "string"}{ "code": "string", "title": "string", "details": "string"}{ "code": "string", "title": "string", "details": "string"}{ "code": "string", "title": "string", "details": "string", "order": { "orderId": "ord_1a2b3c", "domain": "string", "registrar": "string", "status": "quoted", "createdAt": "2019-08-24T14:15:22Z", "regOrderId": "string", "jobId": "string", "link": "string", "freeDomain": true }}{ "code": "string", "title": "string", "details": "string"}{ "code": "string", "title": "string", "details": "string"}