Documentation Index
Fetch the complete documentation index at: https://docs.polymarket.us/llms.txt
Use this file to discover all available pages before exploring further.
The KYC (Know Your Customer) API enables identity verification for user onboarding. This API supports a streamlined verification flow with optional prefill capabilities to reduce friction for users.
Verification Workflow
The KYC process follows this general flow:
Endpoints
| Method | Endpoint | Description |
|---|
POST | /v1/kyc/prefill | Start KYC prefill process |
POST | /v1/kyc/prefill/otp | Submit OTP for prefill verification |
POST | /v1/kyc/start | Start KYC verification |
GET | /v1/kyc/status | Get current KYC status |
POST | /v1/kyc/webhook | Register webhook URL for status notifications |
POST | /v1/kyc/referral-codes | Create partner referral code |
GET | /v1/kyc/referral-codes | List referral codes |
GET | /v1/kyc/referral-codes/{code} | Validate a referral code |
Quick Start
Option 1: With Prefill (Recommended)
Prefill allows users to auto-populate their information using their phone number, reducing manual data entry.
- Start Prefill
curl -X POST "https://api.prod.polymarketexchange.com/rest/api/v1/kyc/prefill" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phoneNumber": "+15551234567",
"dateOfBirth": "1990-01-15",
"userId": "user_123",
"sessionToken": "session_abc"
}'
- Submit OTP (sent to userβs phone)
curl -X POST "https://api.prod.polymarketexchange.com/rest/api/v1/kyc/prefill/otp" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"otp": "123456",
"externalId": "ext_id_from_prefill_response"
}'
- Start Verification (with prefilled data)
curl -X POST "https://api.prod.polymarketexchange.com/rest/api/v1/kyc/start" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"userId": "user_123",
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"phoneNumber": "+15551234567",
"dateOfBirth": "1990-01-15",
"ssn": "***-**-1234",
"address": {
"addressLine1": "123 Main St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US"
},
"sessionToken": "session_abc",
"agreementTime": "2024-01-15T10:30:00Z"
}'
Option 2: Direct Verification
Skip prefill and go directly to verification:
curl -X POST "https://api.prod.polymarketexchange.com/rest/api/v1/kyc/start" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"userId": "user_123",
"firstName": "John",
"lastName": "Doe",
...
}'
Check Status
Use the user_id you provided in the start request:
curl -X GET "https://api.prod.polymarketexchange.com/rest/api/v1/kyc/status?externalId=user_123" \
-H "Authorization: Bearer YOUR_TOKEN"
KYC Status
The status response contains:
| Field | Description |
|---|
decision | Final decision: ACCEPT, REJECT, REVIEW, or empty (not started) |
status | Current status: NOT_STARTED, OPEN, ON_HOLD, CLOSED |
subStatus | Detailed sub-status (e.g., Document Request Initiated) |
externalId | The user_id you provided |
participantId | EP3 participant ID (populated after approval) |
account | EP3 account ID (populated after approval) |
Document Verification (DocV)
If additional document verification is required, the StartKYCVerification response will include DocV details:
| Field | Description |
|---|
docvTransactionToken | Token for document verification |
eventId | Event identifier |
qrCode | QR code for mobile document capture |
url | URL for web-based document capture |
Next Steps