Get an A/B experiment
Read one A/B experiment.
Read one A/B experiment.
The experiment must belong to the agent in the path. An id that exists under a different control agent — or in a different organisation — answers 404, so experiment ids cannot be probed.
Rate limit: 1000 requests per minute per organization (bucket default). Exceeding it returns 429 with Retry-After; the X-RateLimit-* response headers report your remaining allowance on every call.
v2/agents/{agent_id}/versions/{version_id}Authorization
AuthorizationRequiredBearer <token>
Your Graine API key. Create one in the dashboard under Developers, or via POST /v2/api-keys. Send it as Authorization: Bearer <key>.
In: header
Path Parameters
agent_idRequiredAgent Id
The CONTROL agent.
version_idRequiredVersion Id
Experiment identifier.
Query Parameters
organization_idOrganization Id
Must match the organisation the API key belongs to.
Response Body
200
The experiment, including its current traffic split and status.
version_idRequiredVersion Id
Experiment identifier.
main_agent_idRequiredMain Agent Id
The CONTROL agent. Always equal to the agent_id in the path.
variant_agent_idRequiredVariant Agent Id
The CHALLENGER agent that receives the split traffic.
version_nameRequiredVersion Name
Experiment name.
descriptionDescription | null
Free-text notes about the experiment.
variable_testedVariable Tested | null
What is being tested, e.g. 'voice', 'script', 'cadence'.
variant_traffic_pctRequiredVariant Traffic Pct
Percentage of calls routed to the variant (0-100). The remainder goes to the control agent. 0 pauses the variant in place; 100 promotes it.
statusRequiredStatus
draft | active | paused | concluded
winnerWinner | null
control | variant. Only ever set on a concluded experiment.
start_dateStart Date | null
ISO-8601 UTC. Informational; it does not gate routing.
end_dateEnd Date | null
ISO-8601 UTC. Informational; it does not gate routing.
created_byCreated By | null
Identifier of whoever created the experiment.
created_atCreated At | null
ISO-8601 UTC.
updated_atUpdated At | null
ISO-8601 UTC.
400
1000 — malformed or contradictory input: an unknown status token, an empty patch body, an explicit null, or a variant agent that does not exist in this organisation.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
401
1100 — missing, unknown or inactive API key. 1101 — a browser session token was presented.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
403
1102 — the key is valid but lacks the scope this endpoint requires, or names another organisation. GET /v2/scopes reports which scopes the key holds.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
404
1200 — no such agent, or no such version for that agent, in this organisation. Cross-tenant reads answer 404, never 403, so ids cannot be probed.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
422
1001 — the body or query failed validation; the message names the first offending field.
errorRequiredinteger
Stable integer code from the error table. Branch on this, not on the message.
messageRequiredstring
One human-readable sentence. Wording may change; the code will not.
429
1300 — per-organisation rate limit exceeded. Carries Retry-After.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
503
1501 — the agent service is unreachable or returned a 5xx.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
504
1502 — the agent service did not respond in time.
errorRequiredError
Stable integer code from the /v2 error table. Branch on this.
messageRequiredMessage
One human-readable sentence. Wording may change; the code will not.
The experiment, including its current traffic split and status.

