Team
Invite a teammate
Invite a teammate with the same two scopes as the dashboard Team tab. scope=event grants pages on one event only (eventId plus accessAreas). scope=organization grants access to every current and future organization event (organizationId or an eventId in it, plus accessAreas or organizationAdmin) and requires organization admin authority. accessAreas use the dashboard's area keys, for example participants, volunteers, messaging, race-day, timing. sendEmail applies to event-only invites; organization invitations always send the invitation email. Delivery is queued durably and returns runId with status=queued; emailSent remains false until provider submission. Copy-only event access with sendEmail=false is created immediately. Send an Idempotency-Key header.
Method
POST
Path
/v1/team-invitations
Required scope
team:writeRequest
curl -X POST "https://api.endurancehq.app/v1/team-invitations" \
-H "Authorization: Bearer $EHQ_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"JSON body schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"event",
"organization"
]
},
"eventId": {
"type": "string",
"minLength": 1
},
"organizationId": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"accessAreas": {
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"organizationAdmin": {
"default": false,
"type": "boolean"
},
"accessName": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"receiveInboxAlerts": {
"type": "boolean"
},
"sendEmail": {
"default": true,
"type": "boolean"
}
},
"required": [
"scope",
"email",
"organizationAdmin",
"sendEmail"
],
"additionalProperties": false
}Response
Success status: 202
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"enum": [
"event",
"organization"
]
},
"email": {
"type": "string"
},
"eventId": {
"type": [
"string",
"null"
]
},
"organizationId": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"added",
"invited",
"queued",
"scheduled"
]
},
"runId": {
"type": [
"string",
"null"
]
},
"emailSent": {
"type": "boolean"
},
"collaboratorId": {
"type": [
"string",
"null"
]
},
"accessAreas": {
"type": "array",
"items": {
"type": "string"
}
},
"accessSummary": {
"type": "string"
}
},
"required": [
"scope",
"email",
"eventId",
"organizationId",
"status",
"runId",
"emailSent",
"collaboratorId",
"accessAreas",
"accessSummary"
],
"additionalProperties": false
}
},
"required": [
"data"
],
"additionalProperties": false
}Other surfaces
CLI: ehq team invite --scope event --event <event_id> --email <email> --areas participants,volunteers
MCP tool: ehq_team_invite