Skip to main content
POST

Overview

Registers an end-user under the authenticated partner and stores their KYC record. The user must have kyc_level: "full" before they can quote trades or redemptions. Core KYC fields (country, full_name, kyc_provider, kyc_level, kyc_verified_at) are structured columns; provider-specific data goes in the free-form kyc_data object. If kyc_data includes id_type and id_number, GRAIL validates the id_number against the regex registered for that country/ID-type pair (advisory — absent regex means no validation is enforced).

Headers

string
required
A valid PARTNER scope key.

Request Body

string
required
Your internal identifier for this user. Unique within your partner (two users cannot share the same user_id). Stored as partner_user_id in GRAIL.
string
required
The user’s Solana wallet address. Must be a valid pubkey, and globally unique across all GRAIL users.
object
required
The user’s KYC record.

Response

string
GRAIL’s identifier for the user, prefixed gu_. Use this in all subsequent trade and redemption calls.
string
Echo of your user_id (the partner_user_id).
string
Echo of wallet_address.
string
ISO-8601 timestamp of user creation.

Errors