Skip to content

Create experiments

POST /api/v1/laboratory/experiments: request fields and declared response contract.

POST/api/v1/laboratory/experiments

Authorization
Permissionlaboratory.method.publish
Workspace scoperequired
Scope targetworkspace

Request body

Request body fields
FieldTypeRequiredNullableDefault
experimentRefstringrequirednon-null—
titlestringrequirednon-null—
objectiveVersionRefstringrequirednon-null—
subjectsarrayrequirednon-null—
caseSetRefstringrequirednon-null—
methodobjectrequirednon-null—
method.methodKind"replay" | "simulation" | "optimization" | "backtest" | "rollout"requirednon-null—
method.methodRefstringrequirednon-null—
method.releaseRefstringoptionalnon-null—
method.configDigeststringrequirednon-null—
inputsarrayoptionalnon-null—
evaluationobjectrequirednon-null—
evaluation.mode"prospective" | "retrospective" | "actual_vs_predicted"requirednon-null—
evaluation.bundleRefstringrequirednon-null—
evaluation.baselineRefstringoptionalnon-null—

Response

201

Response fields
FieldTypeRequiredNullableDefault
dataobjectrequirednon-null—
data.experimentRefstringrequirednon-null—
data.revisionintegerrequirednon-null—
data.titlestringrequirednon-null—
data.objectiveVersionRefstringrequirednon-null—
data.subjectsarrayrequirednon-null—
data.caseSetRefstringrequirednon-null—
data.methodobjectrequirednon-null—
data.method.methodKind"replay" | "simulation" | "optimization" | "backtest" | "rollout"requirednon-null—
data.method.methodRefstringrequirednon-null—
data.method.releaseRefstringoptionalnon-null—
data.method.configDigeststringrequirednon-null—
data.inputsarrayrequirednon-null[]
data.evaluationobjectrequirednon-null—
data.evaluation.mode"prospective" | "retrospective" | "actual_vs_predicted"requirednon-null—
data.evaluation.bundleRefstringrequirednon-null—
data.evaluation.baselineRefstringoptionalnon-null—
data.policyEvidenceobjectrequirednon-null—
data.policyEvidence.policyRefsarrayrequirednon-null[]
data.policyEvidence.approvalState"not_required" | "pending" | "approved" | "rejected"requirednon-null—
data.policyEvidence.evaluatedAtstringoptionalnon-null—
data.createdBystringrequirednon-null—
data.createdAtstringrequirednon-null—
data.compositionDigeststringrequirednon-null—

Declared failures

Declared failures
ACCESS_DENIED403 — not retryable
APPROVAL_REQUIRED403 — not retryable
CORE_ERROR500 — not retryable
GOVERNANCE_DENIED403 — not retryable
NOT_FOUND404 — not retryable
QUOTA_DENIED429 — retryable
REBASE_CONFLICT409 — not retryable
REVISION_CONFLICT409 — retryable
SETUP_REQUIRED503 — not retryable
VALIDATION_ERROR400 — not retryable
VALIDATION_INPUT_ERROR400 — not retryable

Readback

Read the result back with:

  • laboratory.experiments.read

Request example

Schematic only. Replace placeholders with real values and include all required nested fields.

POST /api/v1/laboratory/experiments HTTP/1.1
Authorization: Bearer <token>
x-merulan-workspace-id: <workspace-id>
Content-Type: application/json

{
  "experimentRef": "<experimentRef>",
  "title": "<title>",
  "objectiveVersionRef": "<objectiveVersionRef>",
  "subjects": [],
  "caseSetRef": "<caseSetRef>",
  "method": {},
  "evaluation": {}
}