Collaborative Drug Discovery Readout Rows API

Rows of protocol readout data

Operations 4

POST /vaults/{vault_id}/readout_rows/query Get multiple readout rows #
GET /vaults/{vault_id}/readout_rows/{readout_row_id} Get a readout row #
DELETE /vaults/{vault_id}/readout_rows/{readout_row_id} Delete a readout row #
PUT /vaults/{vault_id}/readout_rows/{readout_row_id} Update existing row #

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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/collaborative-drug-discovery:collaborative-drug-discovery-readout-rows-api"
All apis
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.

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

collaborative-drug-discovery-readout-rows-api-openapi.yml Raw ↑
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 Readout Rows API
  version: 1.0.0
servers:
- url: https://app.collaborativedrug.com/api/v1
security:
- ApiKeyAuth: []
tags:
- description: Rows of protocol readout data
  name: Readout Rows
paths:
  /vaults/{vault_id}/readout_rows/query:
    post:
      description: 'Get multiple readout rows (rows of protocol data). We still support the now deprecated GET queries on the endpoint without ''query'' in it and passing query parameters in the URL. It is highly recommended that you switch your applications to the POST queries described here.


        When async is true the request returns an export to poll instead of the readout rows; check it with the GET export progress call and retrieve the result with the GET export call.'
      operationId: getReadoutRows
      parameters:
      - in: path
        name: vault_id
        required: true
        schema:
          $ref: '#/components/schemas/vault_id'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/readout_row_query'
      responses:
        '200':
          content:
            application/json:
              schema:
                oneOf:
                - description: Synchronous response
                  properties:
                    count:
                      description: Total number of readout rows matching the query
                      type: integer
                    objects:
                      items:
                        $ref: '#/components/schemas/readout_row'
                      type: array
                    offset:
                      type: integer
                    page_size:
                      type: integer
                  type: object
                - $ref: '#/components/schemas/export'
          description: The matching readout rows, or the export to poll when async is true
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_apikey'
          description: Missing or invalid API key
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Invalid query parameters, such as an illegal type
      summary: Get multiple readout rows
      tags:
      - Readout Rows
  /vaults/{vault_id}/readout_rows/{readout_row_id}:
    get:
      description: Get a single readout row (row of protocol data) by its id.
      operationId: getReadoutRow
      parameters:
      - in: path
        name: vault_id
        required: true
        schema:
          $ref: '#/components/schemas/vault_id'
      - in: path
        name: readout_row_id
        required: true
        schema:
          description: Numeric identifier of the readout row
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/readout_row'
          description: The readout row
        '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: Couldn't find this readout row
      summary: Get a readout row
      tags:
      - Readout Rows
    delete:
      description: Delete a single readout row (row of protocol data). Only detail rows can be deleted; aggregate rows cannot be deleted via the API.
      operationId: deleteReadoutRow
      parameters:
      - in: path
        name: vault_id
        required: true
        schema:
          $ref: '#/components/schemas/vault_id'
      - in: path
        name: readout_row_id
        required: true
        schema:
          description: Numeric identifier of the readout row
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  message:
                    example: Readout row with ID 1 has been destroyed
                    type: string
                type: object
          description: The readout row was deleted
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_apikey'
          description: Missing or invalid API key
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Aggregate rows can't be destroyed via the API. Only detail rows can be destroyed
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Couldn't find this readout row
      summary: Delete a readout row
      tags:
      - Readout Rows
    put:
      description: 'Updates an existing readout row (including the ability to flag an existing readout row as an outlier).


        This PUT Readout_Rows API call allows users to update a specified row of Protocol data or flag a specified row of Protocol data as an outlier. Only detail rows can be updated; aggregate rows cannot be updated via the API.


        Noteworthy tips:

        - The GET Protocol Data API call will be useful to ascertain the id of the readout row for the Protocol data you wish to edit. - The GET Protocols API call also provides the readout definition IDs.'
      operationId: updateReadoutRow
      parameters:
      - in: path
        name: vault_id
        required: true
        schema:
          $ref: '#/components/schemas/vault_id'
      - in: path
        name: readout_row_id
        required: true
        schema:
          description: Numeric identifier of the readout row
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              properties:
                readouts:
                  additionalProperties:
                    properties:
                      outlier:
                        description: Flag (or unflag) this readout as an outlier
                        type: boolean
                      value:
                        description: New value for this readout
                    type: object
                  description: New readout values and/or outlier flags, keyed by readout definition ID
                  example:
                    '283130':
                      value: 99
                    '283131':
                      outlier: true
                  type: object
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  id:
                    example: 1
                    type: integer
                  readouts:
                    additionalProperties: true
                    description: Readout values keyed by readout definition ID
                    type: object
                type: object
          description: The updated readout row
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Invalid readout keys (only "value" and "outlier" are allowed), invalid outlier flag value, or the readout cannot be flagged as an outlier
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_apikey'
          description: Missing or invalid API key
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Aggregate rows can't be updated via the API. Only detail rows can be updated
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Couldn't find this readout row or one of its readouts
      summary: Update existing row
      tags:
      - Readout Rows
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
    export:
      properties:
        created_at:
          description: Timestamp in ISO-8601 UTC
          example: '2024-01-02T03:04:05Z'
          type: string
        id:
          example: 1
          type: integer
        modified_at:
          description: Timestamp in ISO-8601 UTC
          example: '2024-01-02T03:04:05Z'
          type: string
        queued_job_position:
          description: Position of the export's job in the processing queue. Only present while the export is in the `new` state.
          type: integer
        status:
          description: The export's state. While polling progress it moves `new` -> `started` -> `finished`; any value other than these three during polling means something went wrong. `canceled` is returned after a successful cancel.
          enum:
          - new
          - started
          - finished
          - downloaded
          - failed
          - canceled
          type: string
      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
    readout_row_query:
      properties:
        async:
          description: If true, do an asynchronous export. Use for large data sets.
          type: boolean
        batches:
          description: Array of batch ids. Defaults to all batches.
          items:
            type: integer
          type: array
        created_after:
          $ref: '#/components/schemas/date'
        created_before:
          $ref: '#/components/schemas/date'
        data_sets:
          description: Array of public dataset ids. Defaults to all data sets.
          items:
            type: integer
          type: array
        include_control_state:
          default: false
          description: If true, include the control state of each readout.
          type: boolean
        modified_after:
          $ref: '#/components/schemas/date'
        modified_before:
          $ref: '#/components/schemas/date'
        molecules:
          description: Array of molecule ids. Defaults to all molecules.
          items:
            type: integer
          type: array
        offset:
          type: integer
        only_ids:
          default: false
          description: If true, only return the ids of the readout rows.
          type: boolean
        page_size:
          default: 50
          description: Requested page size (maximum value 1000).
          type: integer
        plates:
          description: Array of plate ids. Defaults to all plates.
          items:
            type: integer
          type: array
        projects:
          description: Array of project ids. Defaults to all available projects.
          items:
            type: integer
          type: array
        protocols:
          description: Array of protocol ids. Defaults to all protocols.
          items:
            type: integer
          type: array
        readout_rows:
          description: Array of readout row ids. Defaults to all readout rows.
          items:
            type: integer
          type: array
        runs:
          description: Array of run ids. Defaults to all runs.
          items:
            type: integer
          type: array
        runs_after:
          $ref: '#/components/schemas/date'
        runs_before:
          $ref: '#/components/schemas/date'
        type:
          description: Filter to specific readout row types. Defaults to all types.
          items:
            enum:
            - detail_row
            - batch_run_aggregate_row
            - batch_protocol_aggregate_row
            - molecule_protocol_aggregate_row
            type: string
          type: array
      type: object
    vault_id:
      description: Numeric identifier of the vault
      type: integer
    readout_row:
      properties:
        batch:
          description: ID of the batch this readout row belongs to
          example: 1
          type: integer
        class:
          example: readout row
          type: string
        created_at:
          description: Timestamp in ISO-8601 UTC
          example: '2024-01-02T03:04:05Z'
          type: string
        id:
          example: 1
          type: integer
        modified_at:
          description: Timestamp in ISO-8601 UTC
          example: '2024-01-02T03:04:05Z'
          type: string
        molecule:
          description: ID of the molecule this readout row belongs to
          example: 1
          type: integer
        protocol:
          description: ID of the protocol this readout row belongs to
          example: 1
          type: integer
        readouts:
          additionalProperties: true
          description: Readout values keyed by readout definition ID
          type: object
        run:
          description: ID of the run this readout row belongs to
          example: 1
          type: integer
        type:
          enum:
          - detail_row
          - batch_run_aggregate_row
          - batch_protocol_aggregate_row
          - molecule_protocol_aggregate_row
          type: string
        well:
          description: Well position for plate-based data
          type: string
      type: object
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: X-CDD-Token
      type: apiKey