Skip to content
Logo

POST /kyc_links

Create a hosted KYC flow and the stub customer behind it. Use this when you want the customer to do the typing.

Request

{
  "type": "individual",
  "full_name": "Alice Zhang",
  "email": "alice@example.com",
  "endorsements": ["base", "sepa"],
  "redirect_uri": "https://yourapp.example.com/kyc-complete"
}
FieldTypeRequiredNotes
typeindividual | businessyesGoverns the hosted form.
emailstringyes
full_namestringnoPre-fills the form.
endorsementsarray of Endorsementnobase, cards, cop, faster_payments, pix, sepa, spei.
redirect_uristringnoBridge redirects here post-completion.

Response (200)

{
  "id": "kyc_link_01HZ…",
  "type": "individual",
  "customer_id": "cust_01HZ…",
  "full_name": "Alice Zhang",
  "email": "alice@example.com",
  "kyc_link": "https://kyc.seismic.systems/flow/abc123",
  "kyc_status": "not_started",
  "tos_link": "https://tos.seismic.systems/flow/def456",
  "tos_status": "pending",
  "rejection_reasons": [],
  "created_at": "2026-04-24T12:00:00Z"
}
curl -X POST "$BASE_URL/kyc_links" \
  -H "Api-Key: $SEISMIC_ORCHESTRATION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "individual",
    "full_name": "Alice Zhang",
    "email": "alice@example.com",
    "endorsements": ["base"],
    "redirect_uri": "https://yourapp.example.com/kyc-complete"
  }'

Redirect the user to kyc_link from the response, then poll GET /kyc_links/{id}.