Get a test key
In the dashboard, open Settings and create a secret test key. It starts with
curious_sk_test_. Put it in your environment as CURIOUS_SECRET_KEY; it is shown once.A test key runs the whole product against shadow users: real declarations, real variants, real decisions, excluded from live learning and live metrics. See Keys and environments.Decide what to show
The first call for an element declares it: the control is what you show today, the rewards are what success means, and The first decisions serve the control while Curious generates its first variants;
element_type tells Curious what kind of content it is writing. The response is the content to render.- HTTP
- Node SDK
experiment_status moves from initializing to exploring when they are live. Send the same declaration on every call: an identical declaration is a no-op.Report the outcome
When the user does the thing, send the event. Curious attributes it to the decision that preceded it, within the reward’s window.
- HTTP
- Node SDK
id is optional and makes a retry safe: send the same request again and the response is { "status": "success", "duplicate": true }.Confirm it worked
Open the dashboard. The element is there with its experiment, the control, and the decision and event you just sent.When the first variants appear, each with the hypothesis behind it, they wait for your approval before serving:
options.approval defaults to manual. Approve them in the dashboard, or declare "options": { "approval": "auto" } to let generated variants serve as soon as they exist. See Approval.Where next
Serve a decision
The user buckets, the declaration fields, the response, and what publishable keys may send.
Track outcomes
Event names, values, timestamps, idempotent ids and the batch form.
Fallbacks and timeouts
What a correct delivery path does when Curious is slow or down.
Go live
The checklist for switching from a test key to a live one.