# Opik REST API

The Opik REST API is currently in beta and subject to change. If you have any questions or feedback about the APIs, please reach out on GitHub: https://github.com/comet-ml/opik.

All of the methods listed in this documentation are used by either the SDK or the UI to interact with the Opik server. As a result,
the methods have been optimized for these use-cases in mind. If you are looking for a method that is not listed above, please create
and issue on GitHub or raise a PR!

Opik includes two main deployment options that results in slightly different API usage:

- **Self-hosted Opik instance:** You will simply need to specify the URL as `http://localhost:5173/api/<endpoint_path>` or similar. This is the default option for the docs.
- **Opik Cloud:** You will need to specify the Opik API Key and Opik Workspace in the header. The format of the header should be:

  ```
  {
    "Comet-Workspace": "your-workspace-name",
    "authorization": "your-api-key"
  }
  ```

  The full payload would therefore look like:
  
  ```
  curl -X GET 'https://www.comet.com/opik/api/v1/private/projects' \
  -H 'Accept: application/json' \
  -H 'Comet-Workspace: <your-workspace-name>' \
  -H 'authorization: <your-api-key>'
  ```

  Do take note here that the authorization header value does not include the `Bearer ` prefix. To switch to using the Opik Cloud in the documentation, you can
  click on the edit button displayed when hovering over the `Base URL` displayed on the right hand side of the docs.

Version `1.0.0`

Servers: `https://www.comet.com/opik/api`

## Operations

| Method | Path | Operation |
| --- | --- | --- |
| `GET` | `/.well-known/oauth-authorization-server` | [Get OAuth Authorization Server Metadata](./api/operations/getoauthauthorizationservermetadata.md) |
| `GET` | `/is-alive/ping` | [isAlive](./api/operations/isalive.md) |
| `GET` | `/is-alive/ver` | [version](./api/operations/version.md) |
| `GET` | `/oauth/authorize` | [OAuth Authorization Endpoint](./api/operations/authorize.md) |
| `POST` | `/oauth/authorize` | [Submit Authorization Consent](./api/operations/consent.md) |
| `GET` | `/oauth/authorize/context` | [Get Authorization Consent Context](./api/operations/getauthorizecontext.md) |
| `POST` | `/oauth/register` | [OAuth Dynamic Client Registration Endpoint](./api/operations/registeroauthclient.md) |
| `POST` | `/oauth/revoke` | [OAuth Token Revocation Endpoint](./api/operations/revoke.md) |
| `POST` | `/oauth/token` | [OAuth Token Endpoint](./api/operations/token.md) |
| `POST` | `/opik/auth-oauth` | [Validate OAuth Access Token](./api/operations/validateoauthtoken.md) |
| `POST` | `/v1/internal/analytics-queries/projects/{projectId}` | [Execute Agent Insights free-form SQL](./api/operations/executeanalyticsquery.md) |
| `GET` | `/v1/internal/usage/bi-datasets` | [Get datasets information for BI events](./api/operations/getdatasetbiinfo.md) |
| `GET` | `/v1/internal/usage/bi-experiments` | [Get experiments information for BI events](./api/operations/getexperimentbiinfo.md) |
| `GET` | `/v1/internal/usage/bi-spans` | [Get spans information for BI events](./api/operations/getspansbiinfo.md) |
| `GET` | `/v1/internal/usage/bi-traces` | [Get traces information for BI events](./api/operations/gettracesbiinfo.md) |
| `GET` | `/v1/internal/usage/workspace-span-counts` | [Get spans count on previous day for all available workspaces](./api/operations/getspanscountforworkspaces.md) |
| `GET` | `/v1/internal/usage/workspace-span-counts-breakdown` | [Get spans count on previous day grouped by workspace, project and user](./api/operations/getspanscountbreakdownforworkspaces.md) |
| `GET` | `/v1/internal/usage/workspace-trace-counts` | [Get traces count on previous day for all available workspaces](./api/operations/gettracescountforworkspaces.md) |
| `PATCH` | `/v1/private/agent-configs/blueprints` | [Add blueprint to existing config](./api/operations/updateagentconfig.md) |
| `POST` | `/v1/private/agent-configs/blueprints` | [Create optimizer config with initial blueprint](./api/operations/createagentconfig.md) |
| `POST` | `/v1/private/agent-configs/blueprints/environments` | [Create or update environments](./api/operations/createorupdateenvs.md) |
| `DELETE` | `/v1/private/agent-configs/blueprints/environments/{env_name}/projects/{project_id}` | [Delete environment](./api/operations/deleteenv.md) |
| `GET` | `/v1/private/agent-configs/blueprints/environments/{env_name}/projects/{project_id}` | [Retrieve blueprint by environment](./api/operations/getblueprintbyenv.md) |
| `PUT` | `/v1/private/agent-configs/blueprints/environments/{env_name}/projects/{project_id}` | [Set environment by blueprint name](./api/operations/setenvbyblueprintname.md) |
| `GET` | `/v1/private/agent-configs/blueprints/history/projects/{project_id}` | [Get blueprint history](./api/operations/getblueprinthistory.md) |
| `GET` | `/v1/private/agent-configs/blueprints/latest/projects/{project_id}` | [Retrieve latest blueprint](./api/operations/getlatestblueprint.md) |
| `POST` | `/v1/private/agent-configs/blueprints/projects/{project_id}/masks/{mask_id}` | [Create blueprint from mask](./api/operations/createblueprintfrommask.md) |
| `GET` | `/v1/private/agent-configs/blueprints/projects/{project_id}/names/{name}` | [Retrieve blueprint by name](./api/operations/getblueprintbyname.md) |
| `POST` | `/v1/private/agent-configs/blueprints/remove-keys` | [Remove configuration parameters](./api/operations/removeconfigkeys.md) |
| `GET` | `/v1/private/agent-configs/blueprints/{blueprint_id}` | [Retrieve blueprint by ID](./api/operations/getblueprintbyid.md) |
| `GET` | `/v1/private/agent-configs/blueprints/{blueprint_id}/deltas` | [Retrieve delta by blueprint ID](./api/operations/getdeltabyid.md) |
| `GET` | `/v1/private/agent-insights/issues` | [Find agent insights issues](./api/operations/findagentinsightsissues.md) |
| `POST` | `/v1/private/agent-insights/issues` | [Store agent insights report results](./api/operations/reportagentinsightsissues.md) |
| `GET` | `/v1/private/agent-insights/issues/{issue_id}` | [Get agent insights issue by id](./api/operations/getagentinsightsissuebyid.md) |
| `PATCH` | `/v1/private/agent-insights/issues/{issue_id}` | [Update agent insights issue status](./api/operations/updateagentinsightsissue.md) |
| `GET` | `/v1/private/agent-insights/jobs/{projectId}` | [Get Agent Insights job](./api/operations/getagentinsightsjob.md) |
| `PATCH` | `/v1/private/agent-insights/jobs/{projectId}` | [Update Agent Insights job](./api/operations/updateagentinsightsjob.md) |
| `POST` | `/v1/private/agent-insights/jobs/{projectId}` | [Create Agent Insights job](./api/operations/createagentinsightsjob.md) |
| `POST` | `/v1/private/agent-insights/jobs/{projectId}/trigger` | [Trigger Agent Insights job](./api/operations/triggeragentinsightsjob.md) |
| `GET` | `/v1/private/alerts` | [Find alerts](./api/operations/findalerts.md) |
| `POST` | `/v1/private/alerts` | [Create alert](./api/operations/createalert.md) |
| `POST` | `/v1/private/alerts/delete` | [Delete alert batch](./api/operations/deletealertbatch.md) |
| `GET` | `/v1/private/alerts/webhooks/examples` | [Get webhook payload examples](./api/operations/getwebhookexamples.md) |
| `POST` | `/v1/private/alerts/webhooks/tests` | [Test alert webhook](./api/operations/testwebhook.md) |
| `GET` | `/v1/private/alerts/{id}` | [Get Alert by id](./api/operations/getalertbyid.md) |
| `PUT` | `/v1/private/alerts/{id}` | [Update alert](./api/operations/updatealert.md) |
| `GET` | `/v1/private/annotation-queues` | [Find annotation queues](./api/operations/findannotationqueues.md) |
| `POST` | `/v1/private/annotation-queues` | [Create annotation queue](./api/operations/createannotationqueue.md) |
| `POST` | `/v1/private/annotation-queues/batch` | [Create annotation queue batch](./api/operations/createannotationqueuebatch.md) |
| `POST` | `/v1/private/annotation-queues/delete` | [Delete annotation queue batch](./api/operations/deleteannotationqueuebatch.md) |
| `GET` | `/v1/private/annotation-queues/{id}` | [Get annotation queue by id](./api/operations/getannotationqueuebyid.md) |
| `PATCH` | `/v1/private/annotation-queues/{id}` | [Update annotation queue](./api/operations/updateannotationqueue.md) |
| `POST` | `/v1/private/annotation-queues/{id}/items/add` | [Add items to annotation queue](./api/operations/additemstoannotationqueue.md) |
| `POST` | `/v1/private/annotation-queues/{id}/items/delete` | [Remove items from annotation queue](./api/operations/removeitemsfromannotationqueue.md) |
| `POST` | `/v1/private/annotation-queues/{id}/items/search` | [Search annotation queue items](./api/operations/searchannotationqueueitems.md) |
| `PUT` | `/v1/private/annotation-queues/{queueId}/items/{itemId}/lock` | [Create or extend annotation queue item lock](./api/operations/lockannotationqueueitem.md) |
| `GET` | `/v1/private/annotation-queues/{queueId}/locks` | [Get all active locks for an annotation queue](./api/operations/getannotationqueuelocks.md) |
| `PUT` | `/v1/private/assertion-results` | [Batch ingestion of assertion results](./api/operations/storeassertionsbatch.md) |
| `POST` | `/v1/private/attachment/delete` | [Delete attachments](./api/operations/deleteattachments.md) |
| `GET` | `/v1/private/attachment/download` | [Download attachment from MinIO](./api/operations/downloadattachment.md) |
| `GET` | `/v1/private/attachment/list` | [Attachments list for entity](./api/operations/attachmentlist.md) |
| `PUT` | `/v1/private/attachment/upload` | [Upload attachment to MinIO](./api/operations/uploadattachment.md) |
| `POST` | `/v1/private/attachment/upload-complete` | [Complete multipart attachment upload](./api/operations/completemultipartupload.md) |
| `POST` | `/v1/private/attachment/upload-start` | [Start multipart attachment upload](./api/operations/startmultipartupload.md) |
| `POST` | `/v1/private/auth` | [Check user access to workspace](./api/operations/checkaccess.md) |
| `GET` | `/v1/private/auth/workspace` | [User's default workspace name](./api/operations/getworkspacename.md) |
| `GET` | `/v1/private/automations/evaluators` | [Find project Evaluators](./api/operations/findevaluators.md) |
| `POST` | `/v1/private/automations/evaluators` | [Create automation rule evaluator](./api/operations/createautomationruleevaluator.md) |
| `POST` | `/v1/private/automations/evaluators/delete` | [Delete automation rule evaluators](./api/operations/deleteautomationruleevaluatorbatch.md) |
| `GET` | `/v1/private/automations/evaluators/{id}` | [Get automation rule evaluator by id](./api/operations/getevaluatorbyid.md) |
| `PATCH` | `/v1/private/automations/evaluators/{id}` | [Update Automation Rule Evaluator by id](./api/operations/updateautomationruleevaluator.md) |
| `GET` | `/v1/private/automations/evaluators/{id}/logs` | [Get automation rule evaluator logs by id](./api/operations/getevaluatorlogsbyid.md) |
| `POST` | `/v1/private/chat/completions` | [Create chat completions](./api/operations/createchatcompletions.md) |
| `GET` | `/v1/private/dashboards` | [Find dashboards](./api/operations/finddashboards.md) |
| `POST` | `/v1/private/dashboards` | [Create dashboard](./api/operations/createdashboard.md) |
| `POST` | `/v1/private/dashboards/delete-batch` | [Delete dashboards](./api/operations/deletedashboardsbatch.md) |
| `DELETE` | `/v1/private/dashboards/{dashboardId}` | [Delete dashboard](./api/operations/deletedashboard.md) |
| `GET` | `/v1/private/dashboards/{dashboardId}` | [Get dashboard by id](./api/operations/getdashboardbyid.md) |
| `PATCH` | `/v1/private/dashboards/{dashboardId}` | [Update dashboard](./api/operations/updatedashboard.md) |
| `GET` | `/v1/private/datasets` | [Find datasets](./api/operations/finddatasets.md) |
| `POST` | `/v1/private/datasets` | [Create dataset](./api/operations/createdataset.md) |
| `POST` | `/v1/private/datasets/delete` | [Delete dataset by name](./api/operations/deletedatasetbyname.md) |
| `POST` | `/v1/private/datasets/delete-batch` | [Delete datasets](./api/operations/deletedatasetsbatch.md) |
| `GET` | `/v1/private/datasets/export-jobs` | [Get all dataset export jobs](./api/operations/getdatasetexportjobs.md) |
| `GET` | `/v1/private/datasets/export-jobs/{jobId}` | [Get dataset export job status](./api/operations/getdatasetexportjob.md) |
| `GET` | `/v1/private/datasets/export-jobs/{jobId}/download` | [Download dataset export file](./api/operations/downloaddatasetexport.md) |
| `PUT` | `/v1/private/datasets/export-jobs/{jobId}/mark-viewed` | [Mark dataset export job as viewed](./api/operations/markdatasetexportjobviewed.md) |
| `PUT` | `/v1/private/datasets/items` | [Create/update dataset items](./api/operations/createorupdatedatasetitems.md) |
| `PATCH` | `/v1/private/datasets/items/batch` | [Batch update dataset items](./api/operations/batchupdatedatasetitems.md) |
| `POST` | `/v1/private/datasets/items/delete` | [Delete dataset items](./api/operations/deletedatasetitems.md) |
| `POST` | `/v1/private/datasets/items/from-csv` | [Create dataset items from CSV file](./api/operations/createdatasetitemsfromcsv.md) |
| `POST` | `/v1/private/datasets/items/from-json` | [Create dataset items from JSON file](./api/operations/createdatasetitemsfromjson.md) |
| `POST` | `/v1/private/datasets/items/stream` | [Stream dataset items](./api/operations/streamdatasetitems.md) |
| `GET` | `/v1/private/datasets/items/{itemId}` | [Get dataset item by id](./api/operations/getdatasetitembyid.md) |
| `PATCH` | `/v1/private/datasets/items/{itemId}` | [Partially update dataset item by id](./api/operations/patchdatasetitem.md) |
| `POST` | `/v1/private/datasets/retrieve` | [Get dataset by name](./api/operations/getdatasetbyidentifier.md) |
| `POST` | `/v1/private/datasets/{dataset_id}/items/from-spans` | [Create dataset items from spans](./api/operations/createdatasetitemsfromspans.md) |
| `POST` | `/v1/private/datasets/{dataset_id}/items/from-traces` | [Create dataset items from traces](./api/operations/createdatasetitemsfromtraces.md) |
| `DELETE` | `/v1/private/datasets/{id}` | [Delete dataset by id](./api/operations/deletedataset.md) |
| `GET` | `/v1/private/datasets/{id}` | [Get dataset by id](./api/operations/getdatasetbyid.md) |
| `PUT` | `/v1/private/datasets/{id}` | [Update dataset by id](./api/operations/updatedataset.md) |
| `POST` | `/v1/private/datasets/{id}/expansions` | [Expand dataset with synthetic samples](./api/operations/expanddataset.md) |
| `POST` | `/v1/private/datasets/{id}/export` | [Start dataset CSV export](./api/operations/startdatasetexport.md) |
| `GET` | `/v1/private/datasets/{id}/items` | [Get dataset items](./api/operations/getdatasetitems.md) |
| `POST` | `/v1/private/datasets/{id}/items/changes` | [Apply changes to dataset items](./api/operations/applydatasetitemchanges.md) |
| `GET` | `/v1/private/datasets/{id}/items/experiments/items` | [Find dataset items with experiment items](./api/operations/finddatasetitemswithexperimentitems.md) |
| `GET` | `/v1/private/datasets/{id}/items/experiments/items/output/columns` | [Get dataset items output columns](./api/operations/getdatasetitemsoutputcolumns.md) |
| `GET` | `/v1/private/datasets/{id}/items/experiments/items/stats` | [Get experiment items stats for dataset](./api/operations/getdatasetexperimentitemsstats.md) |
| `GET` | `/v1/private/datasets/{id}/versions` | [List dataset versions](./api/operations/listdatasetversions.md) |
| `GET` | `/v1/private/datasets/{id}/versions/diff` | [Compare latest version with draft](./api/operations/comparedatasetversions.md) |
| `PATCH` | `/v1/private/datasets/{id}/versions/hash/{versionHash}` | [Update dataset version](./api/operations/updatedatasetversion.md) |
| `POST` | `/v1/private/datasets/{id}/versions/hash/{versionHash}/tags` | [Create version tag](./api/operations/createversiontag.md) |
| `POST` | `/v1/private/datasets/{id}/versions/restore` | [Restore dataset to a previous version](./api/operations/restoredatasetversion.md) |
| `POST` | `/v1/private/datasets/{id}/versions/retrieve` | [Retrieve dataset version by name](./api/operations/retrievedatasetversion.md) |
| `DELETE` | `/v1/private/datasets/{id}/versions/{versionHash}/tags/{tag}` | [Delete version tag](./api/operations/deleteversiontag.md) |
| `GET` | `/v1/private/environments` | [Find environments](./api/operations/findenvironments.md) |
| `POST` | `/v1/private/environments` | [Create environment](./api/operations/createenvironment.md) |
| `POST` | `/v1/private/environments/delete` | [Delete environments](./api/operations/deleteenvironmentsbatch.md) |
| `GET` | `/v1/private/environments/{id}` | [Get environment by id](./api/operations/getenvironmentbyid.md) |
| `PATCH` | `/v1/private/environments/{id}` | [Update environment by id](./api/operations/updateenvironment.md) |
| `GET` | `/v1/private/experiments` | [Find experiments](./api/operations/findexperiments.md) |
| `POST` | `/v1/private/experiments` | [Create experiment](./api/operations/createexperiment.md) |
| `PATCH` | `/v1/private/experiments/batch` | [Batch update experiments](./api/operations/batchupdateexperiments.md) |
| `POST` | `/v1/private/experiments/delete` | [Delete experiments by id](./api/operations/deleteexperimentsbyid.md) |
| `POST` | `/v1/private/experiments/execute` | [Create and execute experiment](./api/operations/executeexperiment.md) |
| `GET` | `/v1/private/experiments/feedback-scores/names` | [Find Feedback Score names](./api/operations/findfeedbackscorenames.md) |
| `POST` | `/v1/private/experiments/finish` | [Finish experiments](./api/operations/finishexperiments.md) |
| `GET` | `/v1/private/experiments/groups` | [Find experiment groups](./api/operations/findexperimentgroups.md) |
| `GET` | `/v1/private/experiments/groups/aggregations` | [Find experiment groups with aggregations](./api/operations/findexperimentgroupsaggregations.md) |
| `POST` | `/v1/private/experiments/items` | [Create experiment items](./api/operations/createexperimentitems.md) |
| `PUT` | `/v1/private/experiments/items/bulk` | [Record experiment items in bulk](./api/operations/experimentitemsbulk.md) |
| `POST` | `/v1/private/experiments/items/delete` | [Delete experiment items](./api/operations/deleteexperimentitems.md) |
| `POST` | `/v1/private/experiments/items/stream` | [Stream experiment items](./api/operations/streamexperimentitems.md) |
| `GET` | `/v1/private/experiments/items/{id}` | [Get experiment item by id](./api/operations/getexperimentitembyid.md) |
| `POST` | `/v1/private/experiments/stream` | [Stream experiments](./api/operations/streamexperiments.md) |
| `GET` | `/v1/private/experiments/{id}` | [Get experiment by id](./api/operations/getexperimentbyid.md) |
| `PATCH` | `/v1/private/experiments/{id}` | [Update experiment by id](./api/operations/updateexperiment.md) |
| `GET` | `/v1/private/feedback-definitions` | [Find Feedback definitions](./api/operations/findfeedbackdefinitions.md) |
| `POST` | `/v1/private/feedback-definitions` | [Create feedback definition](./api/operations/createfeedbackdefinition.md) |
| `POST` | `/v1/private/feedback-definitions/delete` | [Delete feedback definitions](./api/operations/deletefeedbackdefinitionsbatch.md) |
| `DELETE` | `/v1/private/feedback-definitions/{id}` | [Delete feedback definition by id](./api/operations/deletefeedbackdefinitionbyid.md) |
| `GET` | `/v1/private/feedback-definitions/{id}` | [Get feedback definition by id](./api/operations/getfeedbackdefinitionbyid.md) |
| `PUT` | `/v1/private/feedback-definitions/{id}` | [Update feedback definition by id](./api/operations/updatefeedbackdefinition.md) |
| `POST` | `/v1/private/guardrails` | [Create guardrails for traces in a batch](./api/operations/createguardrails.md) |
| `GET` | `/v1/private/insights-views` | [Find insights views](./api/operations/findinsightsviews.md) |
| `POST` | `/v1/private/insights-views` | [Create insights view](./api/operations/createinsightsview.md) |
| `POST` | `/v1/private/insights-views/delete-batch` | [Delete insights views](./api/operations/deleteinsightsviewsbatch.md) |
| `DELETE` | `/v1/private/insights-views/{insightsViewId}` | [Delete insights view](./api/operations/deleteinsightsview.md) |
| `GET` | `/v1/private/insights-views/{insightsViewId}` | [Get insights view by id](./api/operations/getinsightsviewbyid.md) |
| `PATCH` | `/v1/private/insights-views/{insightsViewId}` | [Update insights view](./api/operations/updateinsightsview.md) |
| `GET` | `/v1/private/llm-provider-key` | [Find LLM Provider's ApiKeys](./api/operations/findllmproviderkeys.md) |
| `POST` | `/v1/private/llm-provider-key` | [Store LLM Provider's ApiKey](./api/operations/storellmproviderapikey.md) |
| `POST` | `/v1/private/llm-provider-key/auth-config/test` | [Test a provider's dynamic token auth](./api/operations/testllmproviderauthconfig.md) |
| `POST` | `/v1/private/llm-provider-key/delete` | [Delete LLM Provider's ApiKeys](./api/operations/deletellmproviderapikeysbatch.md) |
| `GET` | `/v1/private/llm-provider-key/{id}` | [Get LLM Provider's ApiKey by id](./api/operations/getllmproviderapikeybyid.md) |
| `PATCH` | `/v1/private/llm-provider-key/{id}` | [Update LLM Provider's ApiKey](./api/operations/updatellmproviderapikey.md) |
| `GET` | `/v1/private/llm/models` | [Get LLM models](./api/operations/getllmmodels.md) |
| `GET` | `/v1/private/local-runners` | [List local runners](./api/operations/listrunners.md) |
| `POST` | `/v1/private/local-runners/jobs` | [Create local runner job](./api/operations/createjob.md) |
| `GET` | `/v1/private/local-runners/jobs/{jobId}` | [Get local runner job](./api/operations/getjob.md) |
| `POST` | `/v1/private/local-runners/jobs/{jobId}/cancel` | [Cancel local runner job](./api/operations/canceljob.md) |
| `GET` | `/v1/private/local-runners/jobs/{jobId}/logs` | [Get local runner job logs](./api/operations/getjoblogs.md) |
| `POST` | `/v1/private/local-runners/jobs/{jobId}/logs` | [Append local runner job logs](./api/operations/appendjoblogs.md) |
| `POST` | `/v1/private/local-runners/jobs/{jobId}/results` | [Report local runner job result](./api/operations/reportjobresult.md) |
| `DELETE` | `/v1/private/local-runners/{runnerId}` | [Disconnect local runner](./api/operations/disconnectrunner.md) |
| `GET` | `/v1/private/local-runners/{runnerId}` | [Get local runner](./api/operations/getrunner.md) |
| `PUT` | `/v1/private/local-runners/{runnerId}/agents` | [Register local runner agents](./api/operations/registeragents.md) |
| `POST` | `/v1/private/local-runners/{runnerId}/bridge/commands` | [Submit bridge command](./api/operations/createbridgecommand.md) |
| `POST` | `/v1/private/local-runners/{runnerId}/bridge/commands/next` | [Poll next bridge commands](./api/operations/nextbridgecommands.md) |
| `GET` | `/v1/private/local-runners/{runnerId}/bridge/commands/{commandId}` | [Get bridge command](./api/operations/getbridgecommand.md) |
| `POST` | `/v1/private/local-runners/{runnerId}/bridge/commands/{commandId}/results` | [Report bridge command result](./api/operations/reportbridgeresult.md) |
| `PATCH` | `/v1/private/local-runners/{runnerId}/checklist` | [Patch runner checklist](./api/operations/patchchecklist.md) |
| `POST` | `/v1/private/local-runners/{runnerId}/heartbeats` | [Local runner heartbeat](./api/operations/heartbeat.md) |
| `GET` | `/v1/private/local-runners/{runnerId}/jobs` | [List local runner jobs](./api/operations/listjobs.md) |
| `POST` | `/v1/private/local-runners/{runnerId}/jobs/next` | [Next local runner job](./api/operations/nextjob.md) |
| `POST` | `/v1/private/manual-evaluation/spans` | [Manually evaluate spans](./api/operations/evaluatespans.md) |
| `POST` | `/v1/private/manual-evaluation/threads` | [Manually evaluate threads](./api/operations/evaluatethreads.md) |
| `POST` | `/v1/private/manual-evaluation/traces` | [Manually evaluate traces](./api/operations/evaluatetraces.md) |
| `POST` | `/v1/private/ollama/models` | [List available Ollama models](./api/operations/listmodels.md) |
| `POST` | `/v1/private/ollama/test-connection` | [Test connection to Ollama instance](./api/operations/testconnection.md) |
| `DELETE` | `/v1/private/ollie/state` | [Delete ollie state](./api/operations/deleteolliestate.md) |
| `GET` | `/v1/private/ollie/state` | [Download ollie state](./api/operations/downloadolliestate.md) |
| `PUT` | `/v1/private/ollie/state` | [Replace ollie state](./api/operations/replaceolliestate.md) |
| `GET` | `/v1/private/optimizations` | [Find optimizations](./api/operations/findoptimizations.md) |
| `POST` | `/v1/private/optimizations` | [Create optimization](./api/operations/createoptimization.md) |
| `PUT` | `/v1/private/optimizations` | [Upsert optimization](./api/operations/upsertoptimization.md) |
| `POST` | `/v1/private/optimizations/delete` | [Delete optimizations by id](./api/operations/deleteoptimizationsbyid.md) |
| `GET` | `/v1/private/optimizations/studio/{id}/logs` | [Get Studio optimization logs](./api/operations/getstudiooptimizationlogs.md) |
| `GET` | `/v1/private/optimizations/{id}` | [Get optimization by id](./api/operations/getoptimizationbyid.md) |
| `PUT` | `/v1/private/optimizations/{id}` | [Update optimization by id](./api/operations/updateoptimizationsbyid.md) |
| `POST` | `/v1/private/otel/v1/traces` | [receiveProtobufTraces](./api/operations/receiveprotobuftraces.md) |
| `POST` | `/v1/private/pairing/sessions` | [Create a pairing session](./api/operations/createpairingsession.md) |
| `POST` | `/v1/private/pairing/sessions/{sessionId}/activate` | [Activate a pairing session](./api/operations/activatepairingsession.md) |
| `GET` | `/v1/private/projects` | [Find projects](./api/operations/findprojects.md) |
| `POST` | `/v1/private/projects` | [Create project](./api/operations/createproject.md) |
| `POST` | `/v1/private/projects/delete` | [Delete projects](./api/operations/deleteprojectsbatch.md) |
| `GET` | `/v1/private/projects/feedback-scores/names` | [Find Feedback Score names By Project Ids](./api/operations/findfeedbackscorenamesbyprojectids.md) |
| `POST` | `/v1/private/projects/retrieve` | [Retrieve project](./api/operations/retrieveproject.md) |
| `GET` | `/v1/private/projects/stats` | [Get Project Stats](./api/operations/getprojectstats.md) |
| `DELETE` | `/v1/private/projects/{id}` | [Delete project by id](./api/operations/deleteprojectbyid.md) |
| `GET` | `/v1/private/projects/{id}` | [Get project by id](./api/operations/getprojectbyid.md) |
| `PATCH` | `/v1/private/projects/{id}` | [Update project by id](./api/operations/updateproject.md) |
| `POST` | `/v1/private/projects/{id}/kpi-cards` | [Get Project KPI Cards](./api/operations/getprojectkpicards.md) |
| `POST` | `/v1/private/projects/{id}/metrics` | [Get Project Metrics](./api/operations/getprojectmetrics.md) |
| `GET` | `/v1/private/projects/{id}/token-usage/names` | [Find Token Usage names](./api/operations/findtokenusagenames.md) |
| `GET` | `/v1/private/projects/{projectId}/activities` | [Get recent activity for a project](./api/operations/getrecentactivity.md) |
| `GET` | `/v1/private/projects/{projectId}/alerts` | [Find alerts by project](./api/operations/findalertsbyproject.md) |
| `GET` | `/v1/private/projects/{projectId}/dashboards` | [Find dashboards by project](./api/operations/finddashboardsbyproject.md) |
| `GET` | `/v1/private/projects/{projectId}/datasets` | [Find datasets by project](./api/operations/finddatasetsbyproject.md) |
| `GET` | `/v1/private/projects/{projectId}/experiments` | [Find experiments by project](./api/operations/findexperimentsbyproject.md) |
| `GET` | `/v1/private/projects/{projectId}/optimizations` | [Find optimizations by project](./api/operations/findoptimizationsbyproject.md) |
| `GET` | `/v1/private/projects/{projectId}/prompts` | [Get prompts by project](./api/operations/getpromptsbyproject.md) |
| `GET` | `/v1/private/projects/{projectId}/reports` | [Get reports for a project](./api/operations/getreports.md) |
| `POST` | `/v1/private/projects/{projectId}/reports/generate` | [Trigger report generation](./api/operations/generatereport.md) |
| `GET` | `/v1/private/projects/{projectId}/reports/preferences` | [Get report preferences](./api/operations/getreportpreference.md) |
| `PUT` | `/v1/private/projects/{projectId}/reports/preferences` | [Update report preferences](./api/operations/updatereportpreference.md) |
| `POST` | `/v1/private/projects/{projectId}/reports/{reportId}/complete` | [Complete report generation](./api/operations/completereport.md) |
| `GET` | `/v1/private/prompts` | [Get prompts](./api/operations/getprompts.md) |
| `POST` | `/v1/private/prompts` | [Create prompt](./api/operations/createprompt.md) |
| `GET` | `/v1/private/prompts/by-commit/{commit}` | [Get prompt by commit](./api/operations/getpromptbycommit.md) |
| `POST` | `/v1/private/prompts/delete` | [Delete prompts](./api/operations/deletepromptsbatch.md) |
| `POST` | `/v1/private/prompts/retrieve-by-commits` | [Get prompts by commits](./api/operations/getpromptsbycommits.md) |
| `PATCH` | `/v1/private/prompts/versions` | [Update prompt versions](./api/operations/updatepromptversions.md) |
| `POST` | `/v1/private/prompts/versions` | [Create prompt version](./api/operations/createpromptversion.md) |
| `POST` | `/v1/private/prompts/versions/retrieve` | [Retrieve prompt version](./api/operations/retrievepromptversion.md) |
| `POST` | `/v1/private/prompts/versions/retrieve-by-ids` | [Retrieve prompt versions by ids](./api/operations/retrievepromptversionsbyids.md) |
| `GET` | `/v1/private/prompts/versions/{versionId}` | [Get prompt version by id](./api/operations/getpromptversionbyid.md) |
| `PATCH` | `/v1/private/prompts/versions/{versionId}/environments` | [Set prompt version environment](./api/operations/setpromptversionenvironment.md) |
| `DELETE` | `/v1/private/prompts/{id}` | [Delete prompt](./api/operations/deleteprompt.md) |
| `GET` | `/v1/private/prompts/{id}` | [Get prompt by id](./api/operations/getpromptbyid.md) |
| `PUT` | `/v1/private/prompts/{id}` | [Update prompt](./api/operations/updateprompt.md) |
| `GET` | `/v1/private/prompts/{id}/versions` | [Get prompt versions](./api/operations/getpromptversions.md) |
| `GET` | `/v1/private/prompts/{promptId}/versions/by-number/{versionNumber}` | [Get prompt version by sequential number](./api/operations/getpromptversionbynumber.md) |
| `POST` | `/v1/private/prompts/{promptId}/versions/{versionId}/restore` | [Restore prompt version](./api/operations/restorepromptversion.md) |
| `GET` | `/v1/private/report-failures` | [List failures for a project](./api/operations/findreportfailures.md) |
| `POST` | `/v1/private/report-failures` | [Record a report/job failure](./api/operations/createreportfailure.md) |
| `GET` | `/v1/private/retention/rules` | [Find retention rules](./api/operations/findretentionrules.md) |
| `POST` | `/v1/private/retention/rules` | [Create retention rule](./api/operations/createretentionrule.md) |
| `DELETE` | `/v1/private/retention/rules/{ruleId}` | [Deactivate retention rule](./api/operations/deactivateretentionrule.md) |
| `GET` | `/v1/private/retention/rules/{ruleId}` | [Get retention rule by id](./api/operations/getretentionrulebyid.md) |
| `GET` | `/v1/private/spans` | [Get spans by project_name or project_id and optionally by trace_id and/or type](./api/operations/getspansbyproject.md) |
| `POST` | `/v1/private/spans` | [Create span](./api/operations/createspan.md) |
| `PATCH` | `/v1/private/spans/batch` | [Batch update spans](./api/operations/batchupdatespans.md) |
| `POST` | `/v1/private/spans/batch` | [Create spans](./api/operations/createspans.md) |
| `POST` | `/v1/private/spans/comments/delete` | [Delete span comments](./api/operations/deletespancomments.md) |
| `PATCH` | `/v1/private/spans/comments/{commentId}` | [Update span comment by id](./api/operations/updatespancomment.md) |
| `GET` | `/v1/private/spans/exists` | [Check whether a project has spans](./api/operations/spansexist.md) |
| `PUT` | `/v1/private/spans/feedback-scores` | [Batch feedback scoring for spans](./api/operations/scorebatchofspans.md) |
| `GET` | `/v1/private/spans/feedback-scores/names` | [Find Feedback Score names](./api/operations/findfeedbackscorenames_1.md) |
| `POST` | `/v1/private/spans/search` | [Search spans](./api/operations/searchspans.md) |
| `GET` | `/v1/private/spans/stats` | [Get span stats](./api/operations/getspanstats.md) |
| `DELETE` | `/v1/private/spans/{id}` | [Delete span by id](./api/operations/deletespanbyid.md) |
| `GET` | `/v1/private/spans/{id}` | [Get span by id](./api/operations/getspanbyid.md) |
| `PATCH` | `/v1/private/spans/{id}` | [Update span by id](./api/operations/updatespan.md) |
| `POST` | `/v1/private/spans/{id}/comments` | [Add span comment](./api/operations/addspancomment.md) |
| `PUT` | `/v1/private/spans/{id}/feedback-scores` | [Add span feedback score](./api/operations/addspanfeedbackscore.md) |
| `POST` | `/v1/private/spans/{id}/feedback-scores/delete` | [Delete span feedback score](./api/operations/deletespanfeedbackscore.md) |
| `GET` | `/v1/private/spans/{spanId}/comments/{commentId}` | [Get span comment](./api/operations/getspancomment.md) |
| `GET` | `/v1/private/toggles` | [Get Service Toggles](./api/operations/getservicetoggles.md) |
| `GET` | `/v1/private/traces` | [Get traces by project_name or project_id](./api/operations/gettracesbyproject.md) |
| `POST` | `/v1/private/traces` | [Create trace](./api/operations/createtrace.md) |
| `PATCH` | `/v1/private/traces/batch` | [Batch update traces](./api/operations/batchupdatetraces.md) |
| `POST` | `/v1/private/traces/batch` | [Create traces](./api/operations/createtraces.md) |
| `POST` | `/v1/private/traces/comments/delete` | [Delete trace comments](./api/operations/deletetracecomments.md) |
| `PATCH` | `/v1/private/traces/comments/{commentId}` | [Update trace comment by id](./api/operations/updatetracecomment.md) |
| `POST` | `/v1/private/traces/delete` | [Delete traces](./api/operations/deletetraces.md) |
| `GET` | `/v1/private/traces/exists` | [Check whether a project has traces](./api/operations/tracesexist.md) |
| `PUT` | `/v1/private/traces/feedback-scores` | [Batch feedback scoring for traces](./api/operations/scorebatchoftraces.md) |
| `GET` | `/v1/private/traces/feedback-scores/names` | [Find Feedback Score names](./api/operations/findfeedbackscorenames_2.md) |
| `POST` | `/v1/private/traces/search` | [Search traces](./api/operations/searchtraces.md) |
| `GET` | `/v1/private/traces/stats` | [Get trace stats](./api/operations/gettracestats.md) |
| `GET` | `/v1/private/traces/threads` | [Get trace threads](./api/operations/gettracethreads.md) |
| `PATCH` | `/v1/private/traces/threads/batch` | [Batch update threads](./api/operations/batchupdatethreads.md) |
| `PUT` | `/v1/private/traces/threads/close` | [Close trace thread(s)](./api/operations/closetracethread.md) |
| `POST` | `/v1/private/traces/threads/comments/delete` | [Delete thread comments](./api/operations/deletethreadcomments.md) |
| `PATCH` | `/v1/private/traces/threads/comments/{commentId}` | [Update thread comment by id](./api/operations/updatethreadcomment.md) |
| `POST` | `/v1/private/traces/threads/delete` | [Delete trace threads](./api/operations/deletetracethreads.md) |
| `PUT` | `/v1/private/traces/threads/feedback-scores` | [Batch feedback scoring for threads](./api/operations/scorebatchofthreads.md) |
| `POST` | `/v1/private/traces/threads/feedback-scores/delete` | [Delete thread feedback scores](./api/operations/deletethreadfeedbackscores.md) |
| `GET` | `/v1/private/traces/threads/feedback-scores/names` | [Find Trace Threads Feedback Score names](./api/operations/findtracethreadsfeedbackscorenames.md) |
| `PUT` | `/v1/private/traces/threads/open` | [Open trace thread](./api/operations/opentracethread.md) |
| `POST` | `/v1/private/traces/threads/retrieve` | [Get trace thread](./api/operations/gettracethread.md) |
| `POST` | `/v1/private/traces/threads/search` | [Search trace threads](./api/operations/searchtracethreads.md) |
| `GET` | `/v1/private/traces/threads/stats` | [Get trace thread stats](./api/operations/gettracethreadstats.md) |
| `POST` | `/v1/private/traces/threads/{id}/comments` | [Add thread comment](./api/operations/addthreadcomment.md) |
| `GET` | `/v1/private/traces/threads/{threadId}/comments/{commentId}` | [Get thread comment](./api/operations/getthreadcomment.md) |
| `PATCH` | `/v1/private/traces/threads/{threadModelId}` | [Update thread](./api/operations/updatethread.md) |
| `DELETE` | `/v1/private/traces/{id}` | [Delete trace by id](./api/operations/deletetracebyid.md) |
| `GET` | `/v1/private/traces/{id}` | [Get trace by id](./api/operations/gettracebyid.md) |
| `PATCH` | `/v1/private/traces/{id}` | [Update trace by id](./api/operations/updatetrace.md) |
| `POST` | `/v1/private/traces/{id}/comments` | [Add trace comment](./api/operations/addtracecomment.md) |
| `PUT` | `/v1/private/traces/{id}/feedback-scores` | [Add trace feedback score](./api/operations/addtracefeedbackscore.md) |
| `POST` | `/v1/private/traces/{id}/feedback-scores/delete` | [Delete trace feedback score](./api/operations/deletetracefeedbackscore.md) |
| `GET` | `/v1/private/traces/{traceId}/comments/{commentId}` | [Get trace comment](./api/operations/gettracecomment.md) |
| `GET` | `/v1/private/welcome-wizard` | [Get welcome wizard tracking status](./api/operations/getwelcomewizardstatus.md) |
| `POST` | `/v1/private/welcome-wizard` | [Submit welcome wizard](./api/operations/submitwelcomewizard.md) |
| `GET` | `/v1/private/workspace-permissions` | [Get workspace permissions for the authenticated user](./api/operations/getworkspaceuserpermissions.md) |
| `DELETE` | `/v1/private/workspaces/configurations` | [Delete workspace configuration](./api/operations/deleteworkspaceconfiguration.md) |
| `GET` | `/v1/private/workspaces/configurations` | [Get workspace configuration](./api/operations/getworkspaceconfiguration.md) |
| `PUT` | `/v1/private/workspaces/configurations` | [Upsert workspace configuration](./api/operations/upsertworkspaceconfiguration.md) |
| `POST` | `/v1/private/workspaces/costs` | [Get cost daily data](./api/operations/getcost.md) |
| `POST` | `/v1/private/workspaces/costs/summaries` | [Get costs summary](./api/operations/costssummary.md) |
| `POST` | `/v1/private/workspaces/metrics` | [Get metric daily data](./api/operations/getmetric.md) |
| `POST` | `/v1/private/workspaces/metrics/spans` | [Get workspace span metric](./api/operations/getworkspacespanmetric.md) |
| `POST` | `/v1/private/workspaces/metrics/summaries` | [Get metrics summary](./api/operations/metricssummary.md) |
| `POST` | `/v1/private/workspaces/token-usage/names` | [Get workspace token usage names](./api/operations/getworkspacetokenusagenames.md) |
| `GET` | `/v1/session/redirect/datasets` | [Create dataset redirect url](./api/operations/datasetsredirect.md) |
| `GET` | `/v1/session/redirect/experiments` | [Create experiment redirect url](./api/operations/experimentsredirect.md) |
| `GET` | `/v1/session/redirect/optimizations` | [Create optimization redirect url](./api/operations/optimizationsredirect.md) |
| `GET` | `/v1/session/redirect/projects` | [Create project redirect url](./api/operations/projectsredirect.md) |

## Related pages

- [Activate a pairing session](./api/operations/activatepairingsession.md)
- [Add blueprint to existing config](./api/operations/updateagentconfig.md)
- [Add items to annotation queue](./api/operations/additemstoannotationqueue.md)
- [Add span comment](./api/operations/addspancomment.md)
- [Add span feedback score](./api/operations/addspanfeedbackscore.md)
- [Add thread comment](./api/operations/addthreadcomment.md)
- [Add trace comment](./api/operations/addtracecomment.md)
- [Add trace feedback score](./api/operations/addtracefeedbackscore.md)
- [Agent Configs](./api/operations/tags/agent-configs.md)
- [Agent Insights](./api/operations/tags/agent-insights.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
