Collaborative Drug Discovery Runs API
Runs of protocol data
Runs of protocol data
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/collaborative-drug-discovery:collaborative-drug-discovery-runs-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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: 3.2.0
info:
contact:
url: https://support.collaborativedrug.com/hc/en-us/requests/new
description: 'Collaborative Drug Discovery provides an API (Application Programming
Interface) that can be used for secure programmatic access to your vault
data.'
license:
name: Proprietary
url: https://support.collaborativedrug.com/hc/en-us/requests/new
title: CDD Runs API
version: 1.0.0
servers:
- url: https://app.collaborativedrug.com/api/v1
security:
- ApiKeyAuth: []
tags:
- description: Runs of protocol data
name: Runs
paths:
/vaults/{vault_id}/runs:
delete:
description: Delete all runs that were imported by a given slurp. Pass the slurp id as the `slurp` query parameter. Requires write permission for all affected runs. (To delete a single run, use `DELETE /runs/{id}`.)
operationId: deleteRunsBySlurp
parameters:
- in: path
name: vault_id
required: true
schema:
$ref: '#/components/schemas/vault_id'
- description: Id of the slurp whose runs should be deleted.
in: query
name: slurp
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
properties:
message:
type: string
status:
type: integer
type: object
description: The slurp's runs were deleted
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/error_apikey'
description: Missing or invalid API key
summary: Delete runs by slurp
tags:
- Runs
get:
description: List runs in the vault. Supports pagination (`page_size`, `offset`), asynchronous retrieval (`async=true`), `only_ids`, and filtering by protocol, project, slurp, run date, and creation/modification dates.
operationId: getRuns
parameters:
- in: path
name: vault_id
required: true
schema:
$ref: '#/components/schemas/vault_id'
- description: Maximum number of records to return (default 50, maximum 1000).
in: query
name: page_size
schema:
type: integer
- description: Number of records to skip (for pagination).
in: query
name: offset
schema:
type: integer
- description: If true, run the listing as an asynchronous export.
in: query
name: async
schema:
type: boolean
- description: If true, return only the ids of matching runs.
in: query
name: only_ids
schema:
type: boolean
- description: Comma-separated protocol ids to filter by.
in: query
name: protocols
schema:
type: string
- description: Comma-separated project ids to filter by.
in: query
name: projects
schema:
type: string
- description: Only include runs imported by this slurp id.
in: query
name: slurp
schema:
type: integer
- description: Include runs with a run date on/after this date.
in: query
name: run_date_after
schema:
format: date
type: string
- description: Include runs with a run date on/before this date.
in: query
name: run_date_before
schema:
format: date
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/run_object'
type: array
description: List of runs
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/error_apikey'
description: Missing or invalid API key
summary: Get runs
tags:
- Runs
/vaults/{vault_id}/runs/{id}:
delete:
description: Delete a single run. Requires write permission.
operationId: deleteRun
parameters:
- in: path
name: vault_id
required: true
schema:
$ref: '#/components/schemas/vault_id'
- description: Numeric identifier of the run
in: path
name: id
required: true
schema:
type: integer
responses:
'200':
description: The run was deleted
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/error_apikey'
description: Missing or invalid API key
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Run not found, or vault is unauthorized
summary: Delete a run
tags:
- Runs
get:
description: Retrieve a single run, including its plate statistics.
operationId: getRun
parameters:
- in: path
name: vault_id
required: true
schema:
$ref: '#/components/schemas/vault_id'
- description: Numeric identifier of the run
in: path
name: id
required: true
schema:
type: integer
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/run_object'
description: The run
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/error_apikey'
description: Missing or invalid API key
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Run not found, or vault is unauthorized
summary: Get a run
tags:
- Runs
put:
description: Update a run. Only the supplied fields are changed. Use `project_id` to move the run to a different project. Requires write permission.
operationId: updateRun
parameters:
- in: path
name: vault_id
required: true
schema:
$ref: '#/components/schemas/vault_id'
- description: Numeric identifier of the run
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/run_update'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/run_object'
description: The updated run
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/error_apikey'
description: Missing or invalid API key
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Run not found, or vault is unauthorized
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Validation error
summary: Update a run
tags:
- Runs
components:
schemas:
error:
description: A general error response containing an error message and HTTP status code
properties:
code:
description: HTTP status code
type: integer
example: 404
error:
description: Human-readable error message
type: string
example: Resource not found
type: object
run_update:
description: Attributes for updating a run. Only the supplied fields are changed.
example:
run_date: '2026-01-15'
run_fields:
Person: Jane Smith
properties:
conditions:
description: Value for the Conditions run field (alternative to `run_fields`).
type: string
person:
description: Value for the Person run field (alternative to `run_fields`).
type: string
place:
description: Value for the Lab run field (alternative to `run_fields`).
type: string
project_id:
description: Move the run to this project (requires write access to the target project).
type: integer
run_date:
format: date
type: string
run_fields:
additionalProperties: true
description: Custom run field values, keyed by field name.
type: object
type: object
error_apikey:
description: Whenever the given API key doesn't allow access to the given vault or the vault doesn't exist
properties:
code:
default: 401
type: integer
error:
default: key not authorized for access to this vault
type: string
type: object
run_object:
description: A run of a protocol (a set of readout data collected on a date).
properties:
attached_files:
description: Files attached to the run.
items:
additionalProperties: true
type: object
type: array
class:
example: run
type: string
conditions:
description: Value of the Conditions run field, echoed at top level for convenience.
type: string
created_at:
format: date-time
type: string
eln_entries:
description: ELN entries associated with the run.
items:
additionalProperties: true
type: object
type: array
id:
type: integer
modified_at:
format: date-time
type: string
ontology_annotations:
items:
additionalProperties: true
type: object
type: array
person:
description: Value of the Person run field, echoed at top level for convenience.
type: string
place:
description: Value of the Lab run field, echoed at top level for convenience.
type: string
plate_statistics:
description: Per-plate statistics for the run. Only included in the show response.
items:
additionalProperties: true
type: object
type: array
project:
properties:
id:
type: integer
name:
type: string
type: object
protocol:
description: Id of the protocol the run belongs to.
type: integer
run_date:
format: date
type: string
run_fields:
additionalProperties: true
description: Custom run field values, keyed by field name.
type: object
source_files:
description: Source files the run was imported from.
items:
additionalProperties: true
type: object
type: array
required:
- id
- class
- run_date
- project
- protocol
type: object
vault_id:
description: Numeric identifier of the vault
type: integer
securitySchemes:
ApiKeyAuth:
in: header
name: X-CDD-Token
type: apiKey