Duplicate a starter question
Copies the question to the head of the library. The copy is a hand-written question, whatever the original was.
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 POST "https://example.com/api/v1/sites/string/starter-questions/string/duplicate"{ "data": { "id": "stq_01kvnwmagvf27rc9cze5rm9e1r", "position": -4, "enabled": false, "targeting": { "mode": "url_patterns", "pageTypes": [], "urlPatterns": [ "products/trail-shoe" ] }, "texts": { "en": { "label": "Is it waterproof?", "message": null } }, "source": "manual", "sourcePageId": null, "generatedAt": null, "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": [] }}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.
Move a starter question
Moves the question up (toward the head) or down in the library, one place by default or `steps` places, stopping at the edge. One request is one move and records one audit entry, whatever the distance. Returns the question with its new position.