Api

Upsert Participant

PUT
/v1/participants

Registers the participant that the body names by kind and external ID: the call resolves it or creates it, and writes the name, email, and billing ID that the body gives. An ID that POST /v1/participants/rekey retired names the renamed participant, and the response gives its current external ID. A field that the body leaves out stays as it is; null clears a name or an email. The billing ID is the participant's customer ID in the Project's billing provider, which delivers account credit and discount Rewards; it is set once. A billing ID that differs from the participant's, or that another participant of the Project has, returns 409. A new billing ID makes the Rewards that wait for it due at once.

Authorization

WorkspaceApiKey
X-Api-Key<token>

Workspace-owned Better Auth API key of one environment (Sandbox or Live); it authorizes the Projects of that environment in its Workspace. A Project of the other environment returns 403 ENVIRONMENT_MISMATCH. Never expose it in the browser.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PUT "https://example.com/v1/participants" \  -H "Content-Type: application/json" \  -d '{    "projectId": "string",    "participant": {      "kind": "individual",      "externalId": "string"    }  }'
{  "participantId": "string",  "kind": "individual",  "externalId": "string",  "name": "string",  "email": "string",  "billingId": "string",  "success": true}