Participants
Participants represent the people you recruit into Spot Thought from your own source of truth. Each participant tracks their contact information plus audit metadata describing who created or last updated the record. Use the endpoints below to keep participant data synchronized with your CRM and to inspect a single profile on demand.
The Participant Model
Participants surface the identifiers and metadata you need to join Spot Thought data back to your source system. The schema also includes audit actors so you can trace who performed changes.
Properties
- Name
_type- Type
- string
- Description
Resource discriminator. Participants always return
Participant.
- Name
id- Type
- string
- Description
Unique identifier for the participant.
- Name
externalUid- Type
- string
- Description
Identifier that links this participant to your CRM or marketing automation platform.
- Name
email- Type
- string
- Description
Participant email address. Must be unique per workspace.
- Name
name- Type
- string
- Description
Participant full name.
- Name
createdBy- Type
- Actor | null
- Description
Actor who created the participant.
- Name
createdAt- Type
- timestamp | null
- Description
ISO-8601 timestamp describing when the participant was created.
- Name
updatedBy- Type
- Actor | null
- Description
Actor who most recently updated the participant.
- Name
updatedAt- Type
- timestamp | null
- Description
ISO-8601 timestamp for the latest participant update.
Actors follow the shared schema described in the Actor reference. Use that guide whenever you need to branch logic by actor subtype or hydrate audit metadata.
Participant
{
"_type": "Participant",
"id": "ptp_001",
"externalUid": "crm-001",
"email": "alex@example.com",
"name": "Alex Lee",
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Quinn Garcia"
},
"createdAt": "2024-01-08T18:24:03Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Quinn Garcia"
},
"updatedAt": "2024-05-12T16:41:55Z"
}
List participants
Retrieve a paginated list of participants that belong to your workspace. Use the externalUid filter to
locate specific records or iterate through the entire collection with pagination.
Query parameters
- Name
filter[externalUid]- Type
- object
- Description
Optional filter that supports
eq,ne,in, andninkeys to match participants by their external identifier.
- Name
pagination[limit]- Type
- number
- Description
Maximum number of records returned per request. Minimum value is 1.
- Name
pagination[offset]- Type
- number
- Description
Zero-based offset that determines where pagination starts.
Request
curl -G https://api.spot-thought.com/participants \
-H "X-Spot-Api-Key: acct_123" \
-H "X-Spot-Api-Secret: sk_live_abcd" \
-H "X-Spot-Api-Version: 1.0.0" \
--data-urlencode "filter[externalUid][eq]=crm-001" \
--data-urlencode "pagination[limit]=25"
Response
{
"total": 1,
"limit": 25,
"offset": 0,
"items": [
{
"_type": "Participant",
"id": "ptp_001",
"externalUid": "crm-001",
"email": "alex@example.com",
"name": "Alex Lee",
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Quinn Garcia"
},
"createdAt": "2024-01-08T18:24:03Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Quinn Garcia"
},
"updatedAt": "2024-05-12T16:41:55Z"
}
]
}
Create a participant
Create a new participant. External identifiers let you correlate the participant with another system, while email and name seed downstream screener participants and notifications.
Required attributes
- Name
externalUid- Type
- string
- Description
External identifier that must be unique per workspace.
- Name
email- Type
- string
- Description
Participant email address.
- Name
name- Type
- string
- Description
Participant full name.
Request
curl https://api.spot-thought.com/participants \
-H "Content-Type: application/json" \
-H "X-Spot-Api-Key: acct_123" \
-H "X-Spot-Api-Secret: sk_live_abcd" \
-H "X-Spot-Api-Version: 1.0.0" \
-d '{
"externalUid": "crm-003",
"email": "sasha@example.com",
"name": "Sasha Patel"
}'
Response
{
"_type": "Participant",
"id": "ptp_003",
"externalUid": "crm-003",
"email": "sasha@example.com",
"name": "Sasha Patel",
"createdBy": {
"_type": "ApplicationActor",
"id": "app_001",
"name": "Developer API Key"
},
"createdAt": "2024-06-02T10:12:44Z",
"updatedBy": {
"_type": "ApplicationActor",
"id": "app_001",
"name": "Developer API Key"
},
"updatedAt": "2024-06-02T10:12:44Z"
}
Update a participant
Update an existing participant’s profile. Send only the fields you need to change. Provide the participant id in the request path.
Path parameters
- Name
id- Type
- string
- Description
Identifier of the participant to update.
Optional attributes
- Name
email- Type
- string | null
- Description
Updated email address, or
nullto clear the current email.
- Name
name- Type
- string | null
- Description
Updated display name, or
nullto clear the current name.
Request
curl https://api.spot-thought.com/participants/ptp_001 \
-X PATCH \
-H "Content-Type: application/json" \
-H "X-Spot-Api-Key: acct_123" \
-H "X-Spot-Api-Secret: sk_live_abcd" \
-H "X-Spot-Api-Version: 1.0.0" \
-d '{
"name": "Alex Lee (Updated)",
"email": "alex.lee@example.com"
}'
Response
{
"_type": "Participant",
"id": "ptp_001",
"externalUid": "crm-001",
"email": "alex.lee@example.com",
"name": "Alex Lee (Updated)",
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Quinn Garcia"
},
"createdAt": "2024-01-08T18:24:03Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_502",
"name": "Morgan Rivera"
},
"updatedAt": "2024-06-15T09:03:11Z"
}
Retrieve a participant
Fetch a single participant by id. This is useful when hydrating profile details in your own tooling or matching a screener participant back to the original record.
Path parameters
- Name
id- Type
- string
- Description
Identifier of the participant to retrieve.
Request
curl https://api.spot-thought.com/participants/ptp_001 \
-H "X-Spot-Api-Key: acct_123" \
-H "X-Spot-Api-Secret: sk_live_abcd" \
-H "X-Spot-Api-Version: 1.0.0"
Response
{
"_type": "Participant",
"id": "ptp_001",
"externalUid": "crm-001",
"email": "alex@example.com",
"name": "Alex Lee",
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Quinn Garcia"
},
"createdAt": "2024-01-08T18:24:03Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_502",
"name": "Morgan Rivera"
},
"updatedAt": "2024-06-02T10:12:44Z"
}