Screeners
Screeners define the set of questions you present to participants in Spot Thought. Each screener tracks its own publication history and audit metadata so you can understand when a questionnaire changed and who changed it. Use the endpoints below to manage the collection of screeners that belong to your workspace.
The Screener model
Every screener shares a common schema. Responses reference the screener
id, and the audit fields identify the actors who created or last updated
the resource.
Properties
- Name
_type- Type
- string
- Description
Resource discriminator. Screeners always return
Screenerfor this value.
- Name
id- Type
- string
- Description
Unique identifier for the screener.
- Name
title- Type
- string
- Description
Human readable title that appears wherever the screener is referenced.
- Name
description- Type
- string | null
- Description
Optional longer description of the screener’s purpose. Returns
nullwhen no description has been set.
- Name
activePublicationId- Type
- string | null
- Description
Identifier of the currently active screener publication, or
nullwhen no publication is active.
- Name
createdBy- Type
- Actor | null
- Description
Actor who originally created the screener. The shape follows the
Actorschema and includes an_type,id, andname.
- Name
createdAt- Type
- timestamp | null
- Description
ISO-8601 timestamp indicating when the screener was created.
- Name
updatedBy- Type
- Actor | null
- Description
Actor who most recently updated the screener.
- Name
updatedAt- Type
- timestamp | null
- Description
ISO-8601 timestamp for the most recent update to the screener.
Actor objects follow the schema documented in the Actor reference, so you can reuse that definition across every resource that exposes audit metadata.
Screener
{
"_type": "Screener",
"id": "scr_123",
"title": "Customer onboarding",
"description": "Screen potential research participants.",
"activePublicationId": "scpub_456",
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"createdAt": "2024-01-08T18:24:03Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_987",
"name": "Sam Taylor"
},
"updatedAt": "2024-05-12T16:41:55Z"
}
List screeners
Retrieve a paginated list of screeners that belong to your workspace. The response follows the
PaginatedScreener schema with pagination metadata and an items array of screener objects.
Each request must include the authentication headers described in the authentication guide.
Response structure
- Name
total- Type
- number
- Description
Total number of screeners available in the workspace.
- Name
limit- Type
- number
- Description
Number of records returned in this response page.
- Name
offset- Type
- number
- Description
Zero-based offset of the first screener in the returned page.
- Name
items- Type
- Screener[]
- Description
Array of screener resources for this page.
Request
curl -G https://api.spot-thought.com/screeners \
-H "X-Spot-Api-Key: acct_123" \
-H "X-Spot-Api-Secret: sk_live_abcd" \
-H "X-Spot-Api-Version: 1.0.0"
Response
{
"total": 1,
"limit": 20,
"offset": 0,
"items": [
{
"_type": "Screener",
"id": "scr_123",
"title": "Customer onboarding",
"description": "Screen potential research participants.",
"activePublicationId": "scpub_456",
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"createdAt": "2024-01-08T18:24:03Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"updatedAt": "2024-05-12T16:41:55Z"
}
]
}
Create a screener
Create a new screener. Provide at least a title and optionally a description. The response returns the persisted screener
object with audit metadata. Use null for optional fields you want to clear explicitly.
Required attributes
- Name
title- Type
- string
- Description
Title for the screener displayed throughout Spot Thought.
Optional attributes
- Name
description- Type
- string | null
- Description
Longer explanation of what the screener is used for.
Request
curl https://api.spot-thought.com/screeners \
-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 '{
"title": "Customer onboarding",
"description": "Screen potential research participants."
}'
Response
{
"_type": "Screener",
"id": "scr_123",
"title": "Customer onboarding",
"description": "Screen potential research participants.",
"activePublicationId": null,
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"createdAt": "2024-01-08T18:24:03Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"updatedAt": "2024-01-08T18:24:03Z"
}
Retrieve a screener
Fetch a single screener by its identifier. This is useful for hydrating edit forms or showing the current active publication. Pass the screener id in the request path.
Path parameters
- Name
id- Type
- string
- Description
Identifier of the screener to retrieve.
Request
curl https://api.spot-thought.com/screeners/scr_123 \
-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": "Screener",
"id": "scr_123",
"title": "Customer onboarding",
"description": "Screen potential research participants.",
"activePublicationId": "scpub_456",
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"createdAt": "2024-01-08T18:24:03Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"updatedAt": "2024-05-12T16:41:55Z"
}
Update a screener
Update a screener’s title or description. Send only the fields you want to change. Provide null to clear an
optional value such as the description.
Path parameters
- Name
id- Type
- string
- Description
Identifier of the screener to update.
Optional attributes
- Name
title- Type
- string | null
- Description
New title for the screener, or
nullto remove the existing value.
- Name
description- Type
- string | null
- Description
New description for the screener, or
nullto clear the description.
Request
curl https://api.spot-thought.com/screeners/scr_123 \
-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 '{
"title": "Customer onboarding (2024 refresh)",
"description": null
}'
Response
{
"_type": "Screener",
"id": "scr_123",
"title": "Customer onboarding (2024 refresh)",
"description": null,
"activePublicationId": "scpub_456",
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"createdAt": "2024-01-08T18:24:03Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_502",
"name": "Morgan Rivera"
},
"updatedAt": "2024-06-02T10:12:44Z"
}
List screener publications
Retrieve the publication history for a specific screener. Each publication represents an immutable snapshot that can be activated for participants or referenced when analyzing responses. Use this endpoint to audit the version history before inviting new participants.
Path parameters
- Name
id- Type
- string
- Description
Identifier of the screener whose publications you want to list.
Publication properties
- Name
_type- Type
- string
- Description
Always
ScreenerPublication.
- Name
id- Type
- string
- Description
Unique identifier for the publication.
- Name
screenerId- Type
- string
- Description
Screener that the publication belongs to.
- Name
version- Type
- number
- Description
Incrementing version for the screener. Higher numbers represent newer publications.
- Name
status- Type
- 'ACTIVE' | 'ARCHIVED'
- Description
Indicates whether the publication currently accepts new sessions.
- Name
targetQualifiedParticipants- Type
- number | null
- Description
Optional quota that records how many qualified participants the publication was targeting.
- Name
tags- Type
- Tag[]
- Description
Tags that cascade to screener sessions. Each tag provides an
_type,id,category, andvalue.
- Name
createdBy- Type
- Actor | null
- Description
Actor who initially published the screener. Follows the
Actorschema described earlier.
- Name
createdAt- Type
- timestamp | null
- Description
Timestamp for when the publication was created.
- Name
updatedBy- Type
- Actor | null
- Description
Actor who last updated metadata on the publication.
- Name
updatedAt- Type
- timestamp | null
- Description
Timestamp of the most recent publication update.
Request
curl https://api.spot-thought.com/screeners/scr_123/publications \
-H "X-Spot-Api-Key: acct_123" \
-H "X-Spot-Api-Secret": 'sk_live_abcd' \
-H "X-Spot-Api-Version: 1.0.0"
Response
{
"total": 2,
"limit": 20,
"offset": 0,
"items": [
{
"_type": "ScreenerPublication",
"id": "scpub_456",
"screenerId": "scr_123",
"version": 3,
"status": "ACTIVE",
"targetQualifiedParticipants": 120,
"tags": [
{
"_type": "Tag",
"id": "tag_priority",
"category": "recruiting",
"value": "priority"
}
],
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"createdAt": "2024-05-30T15:10:09Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"updatedAt": "2024-05-30T15:10:09Z"
},
{
"_type": "ScreenerPublication",
"id": "scpub_123",
"screenerId": "scr_123",
"version": 2,
"status": "ARCHIVED",
"targetQualifiedParticipants": null,
"tags": [],
"createdBy": {
"_type": "TenantUserActor",
"id": "user_502",
"name": "Morgan Rivera"
},
"createdAt": "2024-04-12T12:02:18Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_502",
"name": "Morgan Rivera"
},
"updatedAt": "2024-05-30T15:08:01Z"
}
]
}
Publish a screener
Publishing locks in the current screener definition and activates a new version number. Call this endpoint after making changes so that new screener sessions reference the latest questionnaire. The API clones the current screener content, assigns the next sequential version, and returns the publication metadata.
Required attributes
- Name
screenerId- Type
- string
- Description
Identifier of the screener you want to publish.
Request
curl https://api.spot-thought.com/screener-publications \
-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 '{
"screenerId": "scr_123"
}'
Response
{
"_type": "ScreenerPublication",
"id": "scpub_789",
"screenerId": "scr_123",
"version": 4,
"status": "ACTIVE",
"targetQualifiedParticipants": null,
"tags": [
{
"_type": "Tag",
"id": "tag_priority",
"category": "recruiting",
"value": "priority"
}
],
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"createdAt": "2024-06-05T09:44:11Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"updatedAt": "2024-06-05T09:44:11Z"
}
Retrieve a screener publication
Fetch a single publication by id to inspect its version number, tags, and audit metadata. This is helpful when you
store references to activePublicationId and need to hydrate UI or analytics views with full details.
Path parameters
- Name
id- Type
- string
- Description
Identifier of the screener publication to retrieve.
Request
curl https://api.spot-thought.com/screener-publications/scpub_456 \
-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": "ScreenerPublication",
"id": "scpub_456",
"screenerId": "scr_123",
"version": 3,
"status": "ACTIVE",
"targetQualifiedParticipants": 120,
"tags": [
{
"_type": "Tag",
"id": "tag_priority",
"category": "recruiting",
"value": "priority"
}
],
"createdBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"createdAt": "2024-05-30T15:10:09Z",
"updatedBy": {
"_type": "TenantUserActor",
"id": "user_789",
"name": "Alex Lee"
},
"updatedAt": "2024-05-30T15:10:09Z"
}