Upsert Participant
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 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}