Collaborative Drug Discovery ELN Entries API
Electronic lab notebook entries
Electronic lab notebook entries
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-eln-entries-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 ELN Entries API
version: 1.0.0
servers:
- url: https://app.collaborativedrug.com/api/v1
security:
- ApiKeyAuth: []
tags:
- description: Electronic lab notebook entries
name: ELN Entries
paths:
/vaults/{vault_id}/eln/entries:
post:
description: 'The body of the POST must contain a JSON structure specifying the desired ELN entry attributes.
Note: Files may be inserted into existing ELN entries using the POST Files API call.'
operationId: createELN
parameters:
- in: path
name: vault_id
required: true
schema:
$ref: '#/components/schemas/vault_id'
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/eln_create'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/eln_entry_status'
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/error_apikey'
description: Missing or invalid API key
summary: Create an ELN entry
tags:
- ELN Entries
/vaults/{vault_id}/eln/entries/query:
post:
description: 'Returns a summary of all available ELN entries for the Vault specified if async=false (default).
If async=true, returns a zip file containing the export of all available ELN entries.
For security purposes, the GET and POST ELN Entries CDD Vault API commands documented here are only available for Vault Administrators.'
operationId: getElnEntries
parameters:
- in: path
name: vault_id
required: true
schema:
$ref: '#/components/schemas/vault_id'
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/eln_entries_query'
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/eln_entry_status'
type: array
description: Success
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/error_apikey'
description: Missing or invalid API key
summary: Get all or some ELN entries
tags:
- ELN Entries
/vaults/{vault_id}/eln/entries/{id}:
put:
description: Update an existing ELN entry. Only the attributes supplied in the body are changed. Content supplied in `append_to_body` (text, links, files) is appended to the existing entry body.
operationId: updateELN
parameters:
- in: path
name: vault_id
required: true
schema:
$ref: '#/components/schemas/vault_id'
- description: Numeric identifier of the ELN entry
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/eln_create'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/eln_entry_status'
description: Success
'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: ELN entry not found, or vault is unauthorized
summary: Update an ELN entry
tags:
- ELN Entries
/vaults/{vault_id}/eln/entries/{id}/status:
post:
description: Perform a witnessing/status action on an ELN entry (submit, approve, reject, cancel, reopen, finalize, or discard). Requires vault administrator access and write permission. The valid actions depend on whether ELN witnessing is enabled for the vault.
operationId: elnEntryStatusAction
parameters:
- in: path
name: vault_id
required: true
schema:
$ref: '#/components/schemas/vault_id'
- description: Numeric identifier of the ELN entry
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/eln_status_action'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/eln_entry_status'
description: The updated ELN entry
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Invalid or missing status_action
'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: ELN entry (or witness) not found, or vault is unauthorized
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: The entry cannot transition from its current status
summary: Perform an ELN entry status action
tags:
- ELN Entries
components:
schemas:
date:
description: 'An ISO 8601 date, or date and time — see [Date and time formats](#date-and-time-formats). Timestamps on this field have one-second precision.
'
format: date
type: string
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
eln_status_action:
description: 'A witnessing/status action to perform on an ELN entry. The set of valid `status_action` values depends on whether ELN witnessing is enabled for the vault:
- Witnessing enabled: `submit` (requires `witness`), `approve`, `reject` (requires `reason`), `cancel`, `reopen` (requires `reason`), `discard`.
- Witnessing disabled: `finalize`, `reopen` (requires `reason`), `discard`.'
example:
status_action: submit
witness: 6021
properties:
reason:
description: Reason for the action (required for `reject` and `reopen`).
type: string
status_action:
description: The action to perform.
enum:
- submit
- approve
- reject
- cancel
- reopen
- finalize
- discard
type: string
witness:
description: Id of the witnessing user (required for `submit`).
type: integer
required:
- status_action
type: object
eln_entry_status:
properties:
created_at:
description: Timestamp in ISO-8601 UTC
example: '2024-01-02T03:04:05Z'
type: string
id:
description: 'The id of the entry
'
example: 42
type: integer
status:
enum:
- new
- open
- submitted
- finalized
type: string
updated_at:
description: Timestamp in ISO-8601 UTC
example: '2024-01-02T03:04:05Z'
type: string
type: object
eln_entries_query:
properties:
async:
default: false
description: 'Perform an asynchronous export
If true, do an asynchronous export (see Async Export)
Use if you wish to retrieve a zip file containing exports of the actual ELN entries along with any files
attached within the ELN entries. Note: any page_size parameter used in a call that also uses the async=true parameter will be ignored. The call will return all matching entries as a zip file with their content.
'
type: boolean
author:
description: 'List of ELN author IDs. We do not match by names, you need to use the users call.
'
items:
type: string
type: array
created_after:
$ref: '#/components/schemas/date'
created_before:
$ref: '#/components/schemas/date'
eln_entries:
description: List of ELN entry IDs
items:
type: string
type: array
finalized_date_after:
$ref: '#/components/schemas/date'
finalized_date_before:
$ref: '#/components/schemas/date'
modified_after:
$ref: '#/components/schemas/date'
modified_before:
$ref: '#/components/schemas/date'
offset:
default: 0
description: Index of the first object actually returned
type: integer
only_ids:
default: false
description: Return only ELN Entry IDs
type: boolean
only_summary:
default: false
description: Return only a csv summary file, async is still recommended
type: boolean
page_size:
default: 50
description: 'Maximum number of objects to return in this call
This parameter is ignored if async is true.
'
maximum: 1000
type: integer
projects:
description: List of project IDs
items:
type: string
type: array
status:
description: Status of ELN entries (open, submitted, finalized)
enum:
- open
- submitted
- finalized
type: string
submitted_date_after:
$ref: '#/components/schemas/date'
submitted_date_before:
$ref: '#/components/schemas/date'
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
eln_create:
description: 'Attributes used to create or update an ELN entry. The same body is accepted by `POST /eln/entries` (create) and `PUT /eln/entries/{id}` (update); on update, only the supplied fields are changed.
'
example:
title: Synthesis of compound 42
project: 7
eln_fields:
Reaction type: Suzuki coupling
append_to_body:
- type: text
text: Procedure followed the standard protocol.
- type: link
url: https://app.collaborativedrug.com/vaults/1/molecules/12345
label: Starting material CDD-12345
- type: file
file: 98765
properties:
append_to_body:
description: 'Ordered list of content nodes appended to the body of the entry. Each node has a `type`; the supported types are:
- `text` — a paragraph of text. Provide `text` (defaults to an empty string).
- `link` — a hyperlink. Provide `url` (required; must be a valid http/https/ftp/mailto URL) and an optional `label` for the display text. Use this to link to a batch, molecule, protocol, or any external resource.
- `file` — an attachment that was already uploaded. Provide `file`, the id of an accessible uploaded file. (Files can also be attached to an existing entry with the `POST /files` API.)
'
items:
oneOf:
- title: Text node
properties:
text:
description: Text content (defaults to an empty string).
type: string
type:
const: text
type: string
required:
- type
type: object
- title: Link node
properties:
label:
description: Display text for the link (optional).
type: string
type:
const: link
type: string
url:
description: Target URL (must be a valid http/https/ftp/mailto URL).
type: string
required:
- type
- url
type: object
- title: File node
properties:
file:
description: Id of an already-uploaded, accessible file.
type: integer
type:
const: file
type: string
required:
- type
- file
type: object
type: array
eln_fields:
additionalProperties:
type: string
description: 'The ELN fields of the entry
'
type: object
project:
anyOf:
- description: Project id
type: integer
- description: Project name
type: string
title:
description: 'The title of the entry
'
type: string
type: object
vault_id:
description: Numeric identifier of the vault
type: integer
securitySchemes:
ApiKeyAuth:
in: header
name: X-CDD-Token
type: apiKey