Skip to content

Get a quiz

GET
/v1/quizzes/{quiz_id}
curl --request GET \
--url https://api.octaneai.com/v1/quizzes/example \
--header 'Authorization: Bearer <token>'
quiz_id
required
Quiz Id
string

The quiz summary and its structure: pages in order with their role, content components, rules and jumps, and the scoring dimensions. Never the quiz document; null and empty fields are left out.

Media typeapplication/json
QuizDetail
object
archived
required
Archived
boolean
created_at
required
Created At
string format: date-time
id
required
Id
string
/^quiz_[0-9a-f]{32}$/
latest_version
Any of:
VersionSummary
object
created_at
required
Created At
string format: date-time
id
required
Id
string
/^ver_[0-9a-f]{32}$/
label
required
Any of:
string
number
required
Number
integer
page_count
required
Page Count
integer
published
required
Published
boolean
quiz_id
required
Quiz Id
string
/^quiz_[0-9a-f]{32}$/
name
required
Name
string
page_count
required
Page Count
integer
published_version
required
Any of:
string
/^ver_[0-9a-f]{32}$/
status
required
AppStatus

Publish-lifecycle status for an app. DRAFT: editable; not served to the storefront embed. PUBLISHED: a version is live; the embed serves the published snapshot. DELETED: soft-deleted; hidden from the dashboard list and the embed, but the row (pages, versions) is retained for recoverability. The column is a plain VARCHAR (native_enum=False), so this value needs no migration.

string
Allowed values: draft published deleted
structure
required
QuizStructure
object
dimensions
Dimensions

The scoring dimensions, in declared order

Array<object>
default:
StructureDimension
object
dimension_id
required
Dimension Id
string
label
required
Label
string
page_count
required
Page Count
integer
pages
Pages

In quiz order, the first 50

Array<object>
default:
StructurePage
object
component_count
required
Component Count

How many content components the page has

integer
components
Components

Content components in stored order, the first 40; layout, buttons and links are left out

Array<object>
default:
StructureComponent
object
component_key
required
Component Key
string
kind
required
Kind

What the component means to a reader: choice_single, choice_multi, choice_slider, slider, number, text, email, phone, date, formula, products, copy (a heading or a text block, whose label is its text), other (an image, video, HTML block or any other content)

string
label
required
Label

The authored label or copy without markup, the first 500 characters

string
option_count
Any of:
integer
options
Any of:
Array<object>
StructureOption
object
label
required
Label
string
option_id
Any of:
string
scores
Any of:
Array<string>
product_source
Any of:
string
range
Any of:
StructureRange
object
max
Any of:
number
min
Any of:
number
step
Any of:
number
required
Any of:
boolean
type
required
Type

What a person calls this kind of component

string
visible_if
Any of:
object
key
additional properties
any
jumps
Jumps

The page’s jump rules in stored order

Array<object>
default:
StructureJump
object
condition
Any of:
object
key
additional properties
any
rule_key
Any of:
string
target_page_key
Target Page Key

The stored target page key

page_key
required
Page Key
string
role
required
PageRole

What the page is for: start (the first page), question, loading (a loading visual), results (it shows products)

string
Allowed values: start question loading results
title
Any of:
string
visible_if
Any of:
object
key
additional properties
any
updated_at
required
Updated At
string format: date-time
urls
required
Urls
object
key
additional properties
string
Example
{
"archived": false,
"created_at": "2026-09-01T12:00:00Z",
"id": "quiz_7c9e6679742540de944be07fc1f90ae7",
"name": "Find your routine",
"page_count": 3,
"status": "draft",
"structure": {
"dimensions": [
{
"dimension_id": "dry",
"label": "Dry skin"
},
{
"dimension_id": "oily",
"label": "Oily skin"
}
],
"page_count": 3,
"pages": [
{
"component_count": 0,
"page_key": "welcome",
"role": "start",
"title": "Find your routine"
},
{
"component_count": 2,
"components": [
{
"component_key": "multi_choice-k3x9q",
"kind": "choice_single",
"label": "How does your skin feel by noon?",
"option_count": 2,
"options": [
{
"label": "Tight",
"option_id": "b1f4d2e0-6c3a-4f0e-9b2a-1d5c7e8f9a01",
"scores": [
"dry"
]
},
{
"label": "Shiny",
"option_id": "c2a5e3f1-7d4b-4a1f-8c3b-2e6d8f9a0b12",
"scores": [
"oily"
]
}
],
"required": true,
"type": "Multiple Choice"
},
{
"component_key": "sliders-p8m2t",
"kind": "slider",
"label": "How many products do you use?",
"range": {
"max": 10,
"min": 1,
"step": 1
},
"required": true,
"type": "Slider"
}
],
"jumps": [
{
"condition": {
"=": [
{
"var": "multi_choice-k3x9q"
},
"tight"
]
},
"rule_key": "jump_1",
"target_page_key": "results"
}
],
"page_key": "skin",
"role": "question",
"title": "Your skin"
},
{
"component_count": 2,
"components": [
{
"component_key": "heading-v7r1c",
"kind": "copy",
"label": "Your routine",
"type": "Heading"
},
{
"component_key": "shopify_product_block-a4n8s",
"kind": "products",
"label": "Products",
"product_source": "points",
"type": "Products"
}
],
"page_key": "results",
"role": "results",
"title": "Your routine"
}
]
},
"updated_at": "2026-09-01T12:00:00Z",
"urls": {
"dashboard": "https://editor.octaneai.com/bot_123/editor/7c9e6679-7425-40de-944b-e07fc1f90ae7",
"self": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7",
"versions": "https://api.octaneai.com/v1/quizzes/quiz_7c9e6679742540de944be07fc1f90ae7/versions"
}
}

The key is missing, malformed, revoked or expired.

Media typeapplication/problem+json
Problem

The body of every non-2xx response.

object
detail
required
Detail

What went wrong, for people

string
errors
Any of:
Array<object>
FieldError
object
field
required
Field

The input that failed, as a dotted path (body.label, query.from)

string
message
required
Message

Why it failed

string
export
Any of:
object
key
additional properties
any
request_id
required
Request Id

The same value as the Request-Id header; quote it to support

string
required
Any of:
Array<string>
retry_after
Any of:
integer
status
required
Status

The HTTP status of the response

integer
title
required
Title

The machine-readable error code

string
type
required
Type

A stable URI naming the error, on this API’s public host

string
Example
{
"detail": "The API key is missing, malformed, revoked or expired",
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": 401,
"title": "invalid_api_key",
"type": "https://api.octaneai.com/errors/invalid_api_key"
}
WWW-Authenticate
string
Example
Bearer

The store’s plan has no API access, or the key lacks the scope.

Media typeapplication/problem+json
Problem

The body of every non-2xx response.

object
detail
required
Detail

What went wrong, for people

string
errors
Any of:
Array<object>
FieldError
object
field
required
Field

The input that failed, as a dotted path (body.label, query.from)

string
message
required
Message

Why it failed

string
export
Any of:
object
key
additional properties
any
request_id
required
Request Id

The same value as the Request-Id header; quote it to support

string
required
Any of:
Array<string>
retry_after
Any of:
integer
status
required
Status

The HTTP status of the response

integer
title
required
Title

The machine-readable error code

string
type
required
Type

A stable URI naming the error, on this API’s public host

string
Examples
{
"detail": "The API key does not carry the scope this route needs",
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"required": [
"quizzes:read"
],
"status": 403,
"title": "insufficient_scope",
"type": "https://api.octaneai.com/errors/insufficient_scope"
}

Not found

Media typeapplication/problem+json
Problem

The body of every non-2xx response.

object
detail
required
Detail

What went wrong, for people

string
errors
Any of:
Array<object>
FieldError
object
field
required
Field

The input that failed, as a dotted path (body.label, query.from)

string
message
required
Message

Why it failed

string
export
Any of:
object
key
additional properties
any
request_id
required
Request Id

The same value as the Request-Id header; quote it to support

string
required
Any of:
Array<string>
retry_after
Any of:
integer
status
required
Status

The HTTP status of the response

integer
title
required
Title

The machine-readable error code

string
type
required
Type

A stable URI naming the error, on this API’s public host

string
Example
{
"detail": "Not found",
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": 404,
"title": "not_found",
"type": "https://api.octaneai.com/errors/not_found"
}

A request parameter is invalid.

Media typeapplication/problem+json
Problem

The body of every non-2xx response.

object
detail
required
Detail

What went wrong, for people

string
errors
Any of:
Array<object>
FieldError
object
field
required
Field

The input that failed, as a dotted path (body.label, query.from)

string
message
required
Message

Why it failed

string
export
Any of:
object
key
additional properties
any
request_id
required
Request Id

The same value as the Request-Id header; quote it to support

string
required
Any of:
Array<string>
retry_after
Any of:
integer
status
required
Status

The HTTP status of the response

integer
title
required
Title

The machine-readable error code

string
type
required
Type

A stable URI naming the error, on this API’s public host

string
Example
{
"detail": "A request parameter is invalid.",
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": 422,
"title": "validation_error",
"type": "https://api.octaneai.com/errors/validation_error"
}

The key’s or the store’s bucket is full; Retry-After says when to try again.

Media typeapplication/problem+json
Problem

The body of every non-2xx response.

object
detail
required
Detail

What went wrong, for people

string
errors
Any of:
Array<object>
FieldError
object
field
required
Field

The input that failed, as a dotted path (body.label, query.from)

string
message
required
Message

Why it failed

string
export
Any of:
object
key
additional properties
any
request_id
required
Request Id

The same value as the Request-Id header; quote it to support

string
required
Any of:
Array<string>
retry_after
Any of:
integer
status
required
Status

The HTTP status of the response

integer
title
required
Title

The machine-readable error code

string
type
required
Type

A stable URI naming the error, on this API’s public host

string
Example
{
"detail": "Too many requests",
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"retry_after": 1,
"status": 429,
"title": "rate_limited",
"type": "https://api.octaneai.com/errors/rate_limited"
}

The request timed out.

Media typeapplication/problem+json
Problem

The body of every non-2xx response.

object
detail
required
Detail

What went wrong, for people

string
errors
Any of:
Array<object>
FieldError
object
field
required
Field

The input that failed, as a dotted path (body.label, query.from)

string
message
required
Message

Why it failed

string
export
Any of:
object
key
additional properties
any
request_id
required
Request Id

The same value as the Request-Id header; quote it to support

string
required
Any of:
Array<string>
retry_after
Any of:
integer
status
required
Status

The HTTP status of the response

integer
title
required
Title

The machine-readable error code

string
type
required
Type

A stable URI naming the error, on this API’s public host

string
Example
{
"detail": "The request timed out.",
"request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": 504,
"title": "timeout",
"type": "https://api.octaneai.com/errors/timeout"
}