Get a starter question
Returns one question with its state and 14-day performance, plus the same impressions and clicks per surface and per UTC day. A question of another organization or another site answers `404`.
Authorization
ApiKeyAuth A WorkOS org-scoped API key, created from the dashboard's organization settings page. Identifies the tenant every read and write is scoped to. Missing, malformed, unknown, revoked, expired, or non-organization-owned keys all return 401 (no distinction, so the response can't be used to probe which keys or org ids exist).
In: header
Path Parameters
The site id (prefixed site_). A site id that isn't yours is a 404, same as any other cross-tenant id.
The starter question id (prefixed stq_).
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/api/v1/sites/string/starter-questions/string"{ "data": { "id": "stq_01kvnwmagvf27rc9cze5rm9e1r", "position": -3, "enabled": false, "targeting": { "mode": "url_patterns", "pageTypes": [], "urlPatterns": [ "products/trail-shoe" ] }, "texts": { "en": { "label": "Is it waterproof?", "message": null } }, "source": "ai_generated", "sourcePageId": "spg_01kvnwmagvf27rc9cze5rm9e1r", "generatedAt": "2026-10-03T09:00:12.000Z", "createdAt": "2026-10-03T09:00:12.000Z", "updatedAt": "2026-10-03T09:00:12.000Z", "state": { "value": "offline", "reason": "disabled", "missingLanguages": [] }, "performance": { "windowDays": 14, "impressions": 0, "clicks": 0, "clickRate": null, "verdict": "never_shown", "reason": "too_recent" }, "surfaces": [ { "surface": "welcome_screen", "impressions": 0, "clicks": 0, "clickRate": null }, { "surface": "composer", "impressions": 0, "clicks": 0, "clickRate": null }, { "surface": "launcher", "impressions": 0, "clicks": 0, "clickRate": null }, { "surface": "starters", "impressions": 0, "clicks": 0, "clickRate": null } ], "daily": [] }}Create a starter question
Writes a question at the head of the library. It is live at once, as in the dashboard, unless you send `enabled: false`. It is always hand-written: the request cannot set a source or a source page, and such fields are ignored. A language the site does not serve is refused with `language_not_enabled` and nothing is written. Limits: a label of 1 to 60 characters, a message of up to 500, and up to 10 URL patterns.
Update a starter question
Edits the text per language and the targeting, and switches the question on or off. The first edit of the text or the targeting of a generated question marks it `ai_generated_edited`, as in the dashboard; switching it on or off does not. A language the site does not serve is refused with `language_not_enabled`. When one request changes the content and the switch, each records its own audit entry.