Code Ocean Capsules API

Reproducible compute capsules and pipelines

Operations 10

GET /capsules/{capsule_id} Get capsule #
DELETE /capsules/{capsule_id} Delete capsule #
GET /capsules/{capsule_id}/app_panel Get capsule app panel #
GET /capsules/{capsule_id}/computations List capsule computations #
POST /capsules/{capsule_id}/data_assets Attach data assets to a capsule #
DELETE /capsules/{capsule_id}/data_assets Detach data assets from a capsule #
PATCH /capsules/{capsule_id}/archive Archive or unarchive a capsule #
POST /capsules/{capsule_id}/sync Git sync a capsule #
POST /capsules/search Search capsules #
POST /pipelines/search Search pipelines #

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/code-ocean-capsules-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

code-ocean-capsules-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Code Ocean Capsules API
  version: v1
  description: The Code Ocean REST API provides programmatic access to the Code Ocean computational research platform. It is organized around REST, accepts and returns JSON-encoded request bodies and responses, and uses standard HTTP response codes, authentication, and verbs. The API lets you manage the three core Code Ocean resources — Capsules and Pipelines (reproducible compute environments), Computations (runs of those capsules/pipelines), and Data Assets (versioned datasets) — so you can automate reproducible research and data-analysis workflows end to end.
  contact:
    name: Code Ocean
    email: dev@codeocean.com
    url: https://docs.codeocean.com/user-guide/code-ocean-api
  license:
    name: Proprietary
  x-generated-by: API Evangelist enrichment pipeline (faithful to docs.codeocean.com)
servers:
- url: https://codeocean.com/api/v1
  description: Code Ocean hosted cloud
- url: https://{domain}/api/v1
  description: Code Ocean deployment (enterprise / VPC domain)
  variables:
    domain:
      default: codeocean.com
      description: Your Code Ocean deployment domain
security:
- accessToken: []
tags:
- name: Capsules
  description: Reproducible compute capsules and pipelines
paths:
  /capsules/{capsule_id}:
    get:
      operationId: getCapsule
      summary: Get capsule
      description: Retrieves metadata for a Capsule. Requires the Capsule Read scope.
      tags:
      - Capsules
      parameters:
      - $ref: '#/components/parameters/CapsuleId'
      responses:
        '200':
          description: Capsule object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Capsule'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteCapsule
      summary: Delete capsule
      description: Deletes an archived capsule or pipeline. Returns 403 if the capsule is not archived, the user lacks permissions, or the capsule is released. Requires the Capsule Write scope.
      tags:
      - Capsules
      parameters:
      - $ref: '#/components/parameters/CapsuleId'
      responses:
        '204':
          description: Capsule deleted
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /capsules/{capsule_id}/app_panel:
    get:
      operationId: getCapsuleAppPanel
      summary: Get capsule app panel
      description: Retrieves the app panel configuration for a Capsule. Requires the Capsule Read scope.
      tags:
      - Capsules
      parameters:
      - $ref: '#/components/parameters/CapsuleId'
      - name: version
        in: query
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: App panel object
          content:
            application/json:
              schema:
                type: object
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /capsules/{capsule_id}/computations:
    get:
      operationId: listCapsuleComputations
      summary: List capsule computations
      description: Retrieves the Computations run from a Capsule. Requires the Capsule Read scope.
      tags:
      - Capsules
      parameters:
      - $ref: '#/components/parameters/CapsuleId'
      responses:
        '200':
          description: List of computation objects
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Computation'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /capsules/{capsule_id}/data_assets:
    post:
      operationId: attachDataAssets
      summary: Attach data assets to a capsule
      description: Attaches data assets to a Capsule. Requires Capsule Read/Write and Data Asset Read/Write scopes.
      tags:
      - Capsules
      parameters:
      - $ref: '#/components/parameters/CapsuleId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                required:
                - id
                properties:
                  id:
                    type: string
                  mount:
                    type: string
      responses:
        '200':
          description: List of data asset attach results
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    mount:
                      type: string
                    ready:
                      type: boolean
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    delete:
      operationId: detachDataAssets
      summary: Detach data assets from a capsule
      description: Detaches data assets from a Capsule or Pipeline. Requires Capsule Read/Write and Data Asset Read/Write scopes.
      tags:
      - Capsules
      parameters:
      - $ref: '#/components/parameters/CapsuleId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
      responses:
        '204':
          description: Data assets detached
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /capsules/{capsule_id}/archive:
    patch:
      operationId: archiveCapsule
      summary: Archive or unarchive a capsule
      description: Archives or unarchives a capsule or pipeline. Requires the Capsule Write scope.
      tags:
      - Capsules
      parameters:
      - $ref: '#/components/parameters/CapsuleId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                archive:
                  type: boolean
      responses:
        '204':
          description: Archive state updated
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /capsules/{capsule_id}/sync:
    post:
      operationId: syncCapsuleGit
      summary: Git sync a capsule
      description: Performs a Git sync between a capsule and its external repository.
      tags:
      - Capsules
      parameters:
      - $ref: '#/components/parameters/CapsuleId'
      responses:
        '200':
          description: Sync result
          content:
            application/json:
              schema:
                type: object
                properties:
                  pushed:
                    type: integer
                  pulled:
                    type: integer
                  new_branch:
                    type: boolean
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /capsules/search:
    post:
      operationId: searchCapsules
      summary: Search capsules
      description: Searches Capsules in the deployment with filtering, sorting and cursor pagination.
      tags:
      - Capsules
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchParams'
      responses:
        '200':
          description: Search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResults'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /pipelines/search:
    post:
      operationId: searchPipelines
      summary: Search pipelines
      description: Searches Pipelines in the deployment with filtering, sorting and cursor pagination.
      tags:
      - Capsules
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchParams'
      responses:
        '200':
          description: Search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResults'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  responses:
    NotFound:
      description: The requested resource doesn't exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: No valid access token provided.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: The access token doesn't have permission to perform the request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      properties:
        message:
          type: string
          description: Human-readable error message
    SearchParams:
      type: object
      description: Search request with filtering, sorting and cursor pagination.
      properties:
        offset:
          type: integer
        limit:
          type: integer
        next_token:
          type: string
        sort_order:
          type: string
          enum:
          - asc
          - desc
        sort_field:
          type: string
        query:
          type: string
        ownership:
          type: string
        status:
          type: string
        type:
          type: string
        origin:
          type: string
        favorite:
          type: boolean
        archived:
          type: boolean
        filters:
          type: array
          items:
            type: object
    SearchResults:
      type: object
      description: Cursor-paginated search results.
      properties:
        has_more:
          type: boolean
        next_token:
          type: string
        results:
          type: array
          items:
            type: object
    Capsule:
      type: object
      description: A reproducible compute capsule or pipeline.
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        owner:
          type: string
        slug:
          type: string
        created:
          type: integer
          description: Unix timestamp
        status:
          type: string
        cloned_from_url:
          type: string
        field:
          type: string
    Computation:
      type: object
      description: A run of a capsule or pipeline.
      properties:
        id:
          type: string
        name:
          type: string
        created:
          type: integer
        owner:
          type: string
        run_time:
          type: integer
        state:
          type: string
          enum:
          - initializing
          - running
          - finalizing
          - completed
          - failed
        end_status:
          type: string
        exit_code:
          type: integer
        has_results:
          type: boolean
        parameters:
          type: array
          items:
            type: object
        data_assets:
          type: array
          items:
            type: object
  parameters:
    CapsuleId:
      name: capsule_id
      in: path
      required: true
      description: The unique identifier of the capsule or pipeline.
      schema:
        type: string
      example: 4bc97533-6eb4-48ac-966f-648548a756d2
  securitySchemes:
    accessToken:
      type: http
      scheme: basic
      description: HTTP Basic authentication. Provide your Code Ocean access token (prefix `cop_`) as the basic-auth username with an empty password, e.g. `-u "cop_xxxxxxxxxx:"`.