Skip to content
Logo

GET /customers/:id

Read a customer. Scoped to the org bound to the credential. Customers owned by a different org return 404. The response is the polymorphic Customer envelope: a type discriminator, the saved profile (a KycProfile for individuals, a KybProfile for businesses), and the inline kyc_link: the hosted-link { token, url } partners share with their end-customer.

The profile body can be partially populated pre-submit. The wizard saves drafts via PUT /customers/:id/kyc/profile, and absent fields are normal at that stage. After POST /customers/:id/kyc/submit succeeds, every required field is present.

Verification status (status, missing fields, hosted verification link if any) lives on GET /customers/:id/kyc/state. This endpoint returns the saved input. That one returns the verification verdict.

Response 200

The Customer envelope. Example: an individual customer post-submit.

{
  "type": "individual",
  "profile": {
    "identity": {
      "first_name": "Alice",
      "middle_name": "Margaret",
      "last_name": "Liddell",
      "date_of_birth": "1985-06-15",
      "nationality": "US",
      "citizenship": "US",
      "gender": "female",
      "country_of_birth": "US",
      "country_of_residence": "US",
      "tax_identification_number": "123-45-6789",
      "social_profile_url": "https://www.linkedin.com/in/alice-liddell"
    },
    "addresses": {
      "residential": {
        "line1": "1 Wall St",
        "city": "New York",
        "state": "NY",
        "postal_code": "10005",
        "country": "US"
      }
    },
    "contact": {
      "email": "alice@example.com",
      "phone": "+12025550100",
      "phone_country_code": "US"
    },
    "employment": {
      "employment_status": "employee",
      "occupation_soc": "15-1252",
      "employer_name": "Acme Inc."
    },
    "risk": {
      "primary_source_of_funds": "salary",
      "source_of_wealth": "savings",
      "account_purpose": "personal_use",
      "acting_as_intermediary": false,
      "pep_status": false
    },
    "volumes": {
      "usd_value_of_fiat": 120000,
      "usd_value_of_crypto": 25000,
      "monthly_deposits": 4,
      "monthly_withdrawals": 2,
      "monthly_crypto_deposits": 1,
      "monthly_crypto_withdrawals": 0,
      "monthly_investment_deposit_usd": 500,
      "monthly_investment_withdrawal_usd": 0,
      "monthly_crypto_investment_deposit_usd": 0,
      "monthly_crypto_investment_withdrawal_usd": 0
    },
    "jurisdictions": {
      "funds_send_receive_jurisdictions": [
        "US",
        "GB"
      ],
      "high_risk_activities": [
        "none_of_the_above"
      ],
      "vendors_and_counterparties": [
        "self_transactions",
        "merchants_suppliers"
      ]
    },
    "attestations": {
      "terms_and_conditions_accepted": true,
      "information_attested": true
    },
    "documents": {
      "government_issued_identification": {
        "kind": "passport",
        "number": "X12345678",
        "country": "US",
        "front_image_document_id": "8e3b…"
      },
      "supporting_documents": []
    },
    "supplemental": [
      {
        "id": "0e8b…",
        "kind": "text",
        "title": "Clarification on settlement volumes",
        "description": "Q3 volume increase reflects two new enterprise clients onboarded in July."
      }
    ]
  },
  "kyc_link": {
    "token": "klink_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w",
    "url": "https://orchestration.seismic.systems/kyc-link/ind/klink_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w"
  }
}

A business customer carries the same envelope with type: "business", profile follows the KybProfile shape, and kyc_link.url uses the /kyc-link/biz/... path segment:

{
  "type": "business",
  "profile": {
    "business": {
      "legal_name": "Acme Inc.",
      "entity_type": "c_corporation",
      "country_of_registration": "US"
    }
  },
  "kyc_link": {
    "token": "klink_b9c8d7e6f5g4h3i2j1k0l9m8n7o6p5q4r3s2t1u0v9w8x",
    "url": "https://orchestration.seismic.systems/kyc-link/biz/klink_b9c8d7e6f5g4h3i2j1k0l9m8n7o6p5q4r3s2t1u0v9w8x"
  }
}

The field is named kyc_link for both kinds. There is no separate kyb_link here. See HostedKycLink for the link shape and how partners use it.

Errors

404, unknown id, or the customer belongs to an org you're not a member of (the two cases collapse so existence doesn't leak across tenants).

Example

curl "$SEISMIC_ORCHESTRATION_URL/v0/customers/2f10…" \
  -H "Api-Key: $SEISMIC_ORCHESTRATION_API_KEY"