Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/opik-prompts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Opik REST Prompts API
description: "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.\n\nAll 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,\nthe methods have been optimized for these use-cases in mind. If you are looking for a method that is not listed above, please create\nand issue on GitHub or raise a PR!\n\nOpik includes two main deployment options that results in slightly different API usage:\n\n- **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.\n- **Opik Cloud:** You will need to specify the Opik API Key and Opik Workspace in the header. The format of the header should be:\n\n ```\n {\n \"Comet-Workspace\": \"your-workspace-name\",\n \"authorization\": \"your-api-key\"\n }\n ```\n\n The full payload would therefore look like:\n \n ```\n curl -X GET 'https://www.comet.com/opik/api/v1/private/projects' \\\n -H 'Accept: application/json' \\\n -H 'Comet-Workspace: <your-workspace-name>' \\\n -H 'authorization: <your-api-key>'\n ```\n\n 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\n click on the edit button displayed when hovering over the `Base URL` displayed on the right hand side of the docs.\n"
contact:
name: Github Repository
url: https://github.com/comet-ml/opik
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: 1.0.0
servers:
- url: http://localhost:5173/api
description: Local server
- url: https://www.comet.com/opik/api
description: Opik Cloud
tags:
- name: Prompts
description: Prompt resources
paths:
/v1/private/prompts:
get:
tags:
- Prompts
summary: Get prompts
description: Get prompts
operationId: getPrompts
parameters:
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: name
in: query
schema:
type: string
description: Filter prompts by name (partial match, case insensitive)
- name: project_id
in: query
schema:
type: string
format: uuid
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PromptPage_Public'
post:
tags:
- Prompts
summary: Create prompt
description: Create prompt
operationId: createPrompt
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Prompt_Write'
responses:
'201':
description: Created
headers:
Location:
required: true
style: simple
schema:
type: string
example: ${basePath}/v1/private/prompts/{promptId}
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/v1/private/prompts/versions:
post:
tags:
- Prompts
summary: Create prompt version
description: Create prompt version
operationId: createPromptVersion
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePromptVersion_Detail'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersion_Detail'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
patch:
tags:
- Prompts
summary: Update prompt versions
description: 'Update one or more prompt versions.
Note: Prompt versions are immutable by design.
Only organizational properties, such as tags etc., can be updated.
Core properties like template and metadata cannot be modified after creation.
PATCH semantics:
- non-empty values update the field
- null values preserve existing field values (no change)
- empty values explicitly clear the field
'
operationId: updatePromptVersions
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersionBatchUpdate'
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/v1/private/prompts/{id}:
get:
tags:
- Prompts
summary: Get prompt by id
description: Get prompt by id; when mask_id or environment is provided, requestedVersion is populated with the resolved version. mask_id and environment are mutually exclusive.
operationId: getPromptById
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: mask_id
in: query
description: Optional mask version id; when set, requestedVersion is the mask row for that id
schema:
type: string
format: uuid
- name: environment
in: query
description: Optional environment name; when set, requestedVersion is the version mapped to that environment for the prompt
schema:
maxLength: 150
minLength: 0
pattern: ^[A-Za-z0-9_-]+$
type: string
responses:
'200':
description: Prompt resource
content:
application/json:
schema:
$ref: '#/components/schemas/Prompt_Detail'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
put:
tags:
- Prompts
summary: Update prompt
description: Update prompt
operationId: updatePrompt
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Prompt_Updatable'
responses:
'204':
description: No content
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
delete:
tags:
- Prompts
summary: Delete prompt
description: Delete prompt
operationId: deletePrompt
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: No content
/v1/private/prompts/delete:
post:
tags:
- Prompts
summary: Delete prompts
description: Delete prompts batch
operationId: deletePromptsBatch
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BatchDelete'
responses:
'204':
description: No Content
/v1/private/prompts/by-commit/{commit}:
get:
tags:
- Prompts
summary: Get prompt by commit
description: Get prompt by commit
operationId: getPromptByCommit
parameters:
- name: commit
in: path
required: true
schema:
pattern: ^[a-zA-Z0-9]{8}$
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Prompt_Detail'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
/v1/private/prompts/versions/{versionId}:
get:
tags:
- Prompts
summary: Get prompt version by id
description: Get prompt version by id
operationId: getPromptVersionById
parameters:
- name: versionId
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Prompt version resource
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersion_Detail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
/v1/private/prompts/{promptId}/versions/by-number/{versionNumber}:
get:
tags:
- Prompts
summary: Get prompt version by sequential number
description: Get a prompt version by its sequential v<N> number for the given prompt.
operationId: getPromptVersionByNumber
parameters:
- name: promptId
in: path
required: true
schema:
type: string
format: uuid
- name: versionNumber
in: path
required: true
schema:
maxLength: 10
minLength: 0
pattern: v\d+
type: string
responses:
'200':
description: Prompt version resource
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersion_Detail'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
/v1/private/prompts/{id}/versions:
get:
tags:
- Prompts
summary: Get prompt versions
description: Get prompt versions
operationId: getPromptVersions
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
schema:
minimum: 1
type: integer
format: int32
default: 1
- name: size
in: query
schema:
minimum: 1
type: integer
format: int32
default: 10
- name: search
in: query
description: Search text to find in template or change description fields
schema:
type: string
- name: sorting
in: query
schema:
type: string
- name: filters
in: query
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersionPage_Public'
/v1/private/prompts/retrieve-by-commits:
post:
tags:
- Prompts
summary: Get prompts by commits
description: Get prompts by prompt version commits
operationId: getPromptsByCommits
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersionCommitsRequest_Public'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PromptVersionLink_Public'
/v1/private/prompts/{promptId}/versions/{versionId}/restore:
post:
tags:
- Prompts
summary: Restore prompt version
description: Restore a prompt version by creating a new version with the content from the specified version
operationId: restorePromptVersion
parameters:
- name: promptId
in: path
required: true
schema:
type: string
format: uuid
- name: versionId
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersion_Detail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
/v1/private/prompts/versions/retrieve:
post:
tags:
- Prompts
summary: Retrieve prompt version
description: Retrieve prompt version
operationId: retrievePromptVersion
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersionRetrieve_Detail'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersion_Detail'
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
/v1/private/prompts/versions/retrieve-by-ids:
post:
tags:
- Prompts
summary: Retrieve prompt versions by ids
description: Retrieve a batch of prompt versions by their ids. Typically used by the UI to resolve mask overlays.
operationId: retrievePromptVersionsByIds
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersionIdsRequest_Detail'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PromptVersion_Detail'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage_Detail'
/v1/private/prompts/versions/{versionId}/environments:
patch:
tags:
- Prompts
summary: Set prompt version environment
description: 'Set or clear the environment owned by a prompt version.
Setting a non-null environment moves ownership atomically: any previous owner of that
environment for the same prompt has its environment cleared in the same transaction.
Setting null clears the environment from the version.
The environment must already exist in the workspace registry; unknown names return 404.
'
operationId: setPromptVersionEnvironment
parameters:
- name: versionId
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PromptVersionEnvironmentUpdate'
responses:
'204':
description: No Content
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
components:
schemas:
Prompt_Updatable:
required:
- name
type: object
properties:
name:
minLength: 1
type: string
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
tags:
uniqueItems: true
type: array
items:
type: string
PromptVersionBatchUpdate:
required:
- ids
- update
type: object
properties:
ids:
maxItems: 1000
minItems: 1
uniqueItems: true
type: array
description: IDs of prompt versions to update
items:
type: string
description: IDs of prompt versions to update
format: uuid
update:
$ref: '#/components/schemas/PromptVersionUpdate'
merge_tags:
type: boolean
description: 'Tag merge behavior:
- true: Add new tags to existing tags (union)
- false: Replace all existing tags with new tags (default behaviour if not provided)
'
default: false
description: 'Request to update one or more prompt versions.
Note: Prompt versions are immutable by design - only organizational properties (such as tags etc.) can be updated.
'
JsonNode_Write:
type: object
PromptVersionCommitsRequest_Public:
required:
- commits
type: object
properties:
commits:
maxItems: 1000
minItems: 1
type: array
items:
minLength: 1
type: string
PromptVersionIdsRequest_Detail:
required:
- ids
type: object
properties:
ids:
maxItems: 1000
minItems: 1
type: array
items:
type: string
format: uuid
PromptPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: '#/components/schemas/Prompt_Public'
sortableBy:
type: array
items:
type: string
Prompt_Public:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are provided.
format: uuid
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
template_structure:
type: string
description: 'Template structure type: ''text'' or ''chat''. Immutable after creation.'
default: text
enum:
- text
- chat
tags:
uniqueItems: true
type: array
items:
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
version_count:
type: integer
format: int64
readOnly: true
PromptVersionLink_Public:
type: object
properties:
prompt_version_id:
type: string
format: uuid
commit:
type: string
prompt_id:
type: string
format: uuid
prompt_name:
type: string
PromptVersionPage_Public:
type: object
properties:
page:
type: integer
format: int32
size:
type: integer
format: int32
total:
type: integer
format: int64
content:
type: array
items:
$ref: '#/components/schemas/PromptVersion_Public'
sortableBy:
type: array
items:
type: string
PromptVersion_Public:
required:
- template
type: object
properties:
id:
type: string
description: version unique identifier, generated if absent
format: uuid
prompt_id:
type: string
format: uuid
readOnly: true
commit:
pattern: ^[a-zA-Z0-9]{8}$
type: string
description: version short unique identifier, generated if absent. it must be 8 characters long
version_number:
type: string
description: sequential version number in the format v<N>; null for masks
readOnly: true
template:
minLength: 1
type: string
metadata:
$ref: '#/components/schemas/JsonNode_Public'
type:
type: string
enum:
- mustache
- jinja2
- python
version_type:
type: string
description: version type discriminator; defaults to prompt_version
enum:
- prompt_version
- mask
environment:
maxLength: 150
minLength: 0
pattern: ^[A-Za-z0-9_-]+$
type: string
description: 'Deprecated: use ''environments'' instead'
deprecated: true
environments:
maxItems: 100
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 150
minLength: 0
pattern: ^[A-Za-z0-9_-]+$
type: string
change_description:
type: string
tags:
uniqueItems: true
type: array
items:
minLength: 1
type: string
template_structure:
type: string
readOnly: true
enum:
- text
- chat
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
ErrorMessage_Detail:
type: object
properties:
errors:
type: array
items:
type: string
PromptVersion_Detail:
required:
- template
type: object
properties:
id:
type: string
description: version unique identifier, generated if absent
format: uuid
prompt_id:
type: string
format: uuid
readOnly: true
commit:
pattern: ^[a-zA-Z0-9]{8}$
type: string
description: version short unique identifier, generated if absent. it must be 8 characters long
version_number:
type: string
description: sequential version number in the format v<N>; null for masks
readOnly: true
template:
minLength: 1
type: string
metadata:
$ref: '#/components/schemas/JsonNode_Detail'
type:
type: string
enum:
- mustache
- jinja2
- python
version_type:
type: string
description: version type discriminator; defaults to prompt_version
enum:
- prompt_version
- mask
environment:
maxLength: 150
minLength: 0
pattern: ^[A-Za-z0-9_-]+$
type: string
description: 'Deprecated: use ''environments'' instead'
deprecated: true
environments:
maxItems: 100
minItems: 0
uniqueItems: true
type: array
items:
maxLength: 150
minLength: 0
pattern: ^[A-Za-z0-9_-]+$
type: string
change_description:
type: string
tags:
uniqueItems: true
type: array
items:
minLength: 1
type: string
variables:
uniqueItems: true
type: array
readOnly: true
items:
type: string
readOnly: true
template_structure:
type: string
readOnly: true
enum:
- text
- chat
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
PromptVersionRetrieve_Detail:
required:
- name
type: object
properties:
name:
minLength: 1
type: string
commit:
type: string
environment:
maxLength: 150
minLength: 0
pattern: ^[A-Za-z0-9_-]+$
type: string
description: If provided, resolves to the version mapped to this environment for the prompt; mutually exclusive with commit and version_number
version_number:
maxLength: 10
minLength: 0
pattern: v\d+
type: string
description: If provided, resolves to the version with this sequential number (e.g. v3); mutually exclusive with commit and environment
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: If provided, scopes the search to the specified project
ErrorMessage:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
details:
type: string
JsonNode_Detail:
type: object
Prompt_Write:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: For project scope, specify either project_id or project_name. If project_name is provided and the project does not exist, it will be created. Ignored when project_id is provided. If neither is provided, the prompt is created at workspace level.
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
template:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
metadata:
$ref: '#/components/schemas/JsonNode_Write'
change_description:
type: string
type:
type: string
enum:
- mustache
- jinja2
- python
template_structure:
type: string
description: 'Template structure type: ''text'' or ''chat''. Immutable after creation.'
default: text
enum:
- text
- chat
tags:
uniqueItems: true
type: array
items:
type: string
CreatePromptVersion_Detail:
required:
- name
- version
type: object
properties:
name:
minLength: 1
type: string
version:
$ref: '#/components/schemas/PromptVersion_Detail'
template_structure:
type: string
description: 'Template structure for the prompt: ''text'' or ''chat''. Note: This field is only used when creating a new prompt. If a prompt with the given name already exists, this field is ignored and the existing prompt''s template structure is used. Template structure is immutable after prompt creation.'
default: text
enum:
- text
- chat
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are provided.
format: uuid
project_name:
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
description: If provided, scopes the prompt to the specified project. Ignored when project_id is provided.
Prompt_Detail:
required:
- name
type: object
properties:
id:
type: string
format: uuid
name:
minLength: 1
type: string
project_id:
type: string
description: Project ID. Takes precedence over project_name when both are provided.
format: uuid
description:
maxLength: 255
minLength: 0
pattern: (?s)^\s*(\S.*\S|\S)\s*$
type: string
template_structure:
type: string
description: 'Template structure type: ''text'' or ''chat''. Immutable after creation.'
default: text
enum:
- text
- chat
tags:
uniqueItems: true
type: array
items:
type: string
created_at:
type: string
format: date-time
readOnly: true
created_by:
type: string
readOnly: true
last_updated_at:
type: string
format: date-time
readOnly: true
last_updated_by:
type: string
readOnly: true
version_count:
type: integer
format: int64
readOnly: true
latest_version:
$ref: '#/components/schemas/PromptVersion_Detail'
requested_
# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opik/refs/heads/main/openapi/opik-prompts-api-openapi.yml