Getting started
Besides building and generating Riddles, the API also covers the everyday management tasks: listing and searching your Riddles, reading a single Riddle, renaming, publishing and unpublishing, and retrieving the embed code or a QR code – for example to embed Riddles dynamically in your CMS.
Not familiar with the API yet? Read the Getting started guide first to learn about authentication and the response format.
List your Riddles
To get a list of the Riddles in a project, use the /riddle/list API endpoint. By default the project of the accessing API key is used; results are paginated with 12 Riddles per page.
You can use any combination of the following optional filters:
| Property | Type | Description |
|---|---|---|
project | integer | The ID of the project you want to list the Riddles from; if not sent, the project of the API key is used |
type | string | Only return Riddles of this type, e.g. Quiz or Poll; omit to get all types |
notType | string | Exclude Riddles of this type |
tags | integer[] | An array of tag IDs the Riddles must be tagged with; learn more about tags |
status | string | published, modified, or draft; omit to get all statuses |
search | string | Any search term |
origin | string | api (built via the Builder API or generated by the Riddle AI) or manual (created by hand in the Creator); omit to get both. Any other value is rejected with Invalid filter origin: "<value>". Allowed: api, manual |
sortBy | string | created, published, or modified. Any other value is rejected with Invalid sortBy: <value>. Allowed: created, modified, published |
sortOrder | string | ASC or DESC. Any other value is rejected with Invalid sortOrder: <value>. Allowed: ASC, DESC |
page | integer | The page you want to fetch; if not sent, the first page is returned |
pageSize | integer | How many Riddles to return per page (default 12, maximum 300) |
Example: Fetch the most recently published quizzes matching "onboarding":
{
"type": "Quiz",
"status": "published",
"search": "onboarding",
"sortBy": "published",
"sortOrder": "DESC",
"page": 1
}
Pagination
Next to data, the response contains a pagination object so you know whether you have to fetch more pages:
{
"success": true,
"data": ["... the Riddles of this page ..."],
"pagination": {
"page": 1,
"pageSize": 12,
"total": 137,
"hasMore": true
}
}
total is the number of Riddles matching your filters, not the total number of Riddles in the project, so you can page through a filtered list with hasMore.
Tip: To list Riddles across your entire account (personal project plus all team projects), use the /riddle/account-list endpoint instead. It supports the same filters and the same pagination object, except project.
Tip: Combine origin: "api" with the delete endpoint to find and clean up the Riddles your integration created.
Get a single Riddle
To retrieve a single Riddle, including its content, settings, and metadata, use the /riddle/{UUID} endpoint with the Riddle's UUID.
This is also useful to look up block and answer IDs, e.g. when working with the Stats API.
Both this endpoint and /riddle/list include a features object on each Riddle:
| Property | Type | Description | Default |
|---|---|---|---|
cta | boolean | Whether the Riddle has a call-to-action button | |
form | boolean | Whether the Riddle has a lead generation form | |
hasDependencies | boolean | Whether the Riddle depends on other Riddles, e.g. if this is a form embedded by other Riddles. Riddle-to-Riddle only - a Question Bank reference never sets this to true | |
hasEmbeddedRiddles | boolean | Whether the Riddle has other Riddles embedded in it, e.g. forms | |
hasQuestionBankDependencies | boolean | Whether the Riddle references at least one question bank | |
hasIntegration | boolean | Whether the Riddle is connected to at least one integration, e.g. MailChimp or Zapier; only present where it was resolved | false |
connectedLeaderboards | object | The leaderboards this Riddle is connected to, each with uuid and title | |
connectedRiddles | object | The Riddles connected to this Riddle, e.g. quizzes embedding this form, each with uuid, type, and title |
Rename a Riddle
To rename a Riddle, send the new title to the /riddle/rename/{UUID} endpoint:
{
"title": "My new Riddle title"
}
Publish or unpublish a Riddle
- /riddle/publish/{UUID} publishes a Riddle – it becomes available via its public URL and embed code.
- /riddle/unpublish/{UUID} takes a Riddle offline – the public URL is no longer reachable.
Both endpoints only require the Riddle UUID, no request body is needed.
Get the embed code
To retrieve the HTML embed code of a published Riddle, use the /riddle/embed-code/{UUID} endpoint. The data property of the response contains the embed code as a string, ready to be placed on your website.
Note: This endpoint also works with old Riddle 1.0 IDs.
Get a QR code
To generate a QR code for a published Riddle (e.g. for print material), use the /riddle/qr-code/{UUID} endpoint.
Delete a Riddle
Riddles built via the Builder API can be deleted via the Riddle delete endpoint. Deleting a Riddle created in the Creator is not possible via the API. Learn more
Projects
Two endpoints help you work with projects, e.g. to find the project IDs used across the API:
- /project/list returns all the projects the user is a member of.
- /project/{projectId} returns information about a single project.
/project/list returns all projects in a single response by default. If you have a lot of projects, add the query parameters page (1-indexed) and/or pageSize (default 50) to paginate instead - the response then also contains the same pagination object as the Riddle list:
GET /project/list?page=2&pageSize=25
Next steps
- Manage tags: Organize your Riddles with tags and use them as list filters.
- Fetch leads: Retrieve the leads collected by a Riddle.
- Fetch stats: Read the results and engagement data of your Riddles.
- Build Riddles: Create and edit Riddles of every type from a JSON build configuration.
- Generate Riddles with AI: Let the Riddle AI create a Riddle from a topic or a URL.
- Look at the specification of all available API endpoints: Find out what you can do with the Riddle API.

