Users
Create User
Registers an end-user under the authenticated partner. KYC is flexible JSON — core fields are required, provider-specific data lives in kyc_data.
POST
Overview
Registers an end-user under the authenticated partner and stores their KYC record. The user must havekyc_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.
