Benchling · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Benchling v3 API

10 actions 10 updates documentation extends ../openapi/benchling-v3-openapi.yaml
Derived by API Evangelist Built from the contracts Benchling publishes. Benchling did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

descriptionexternalDocscontacttermsOfServicetitle

Targets 10

$.info
$.servers
$
$.components.schemas.GeneralError
$.components.schemas.InternalServerError
$.components.securitySchemes.oAuth
$.components.securitySchemes.basicApiKeyAuth
$.components.parameters.pageSize
$.components.responses.TooManyRequests
$.paths.*.*.parameters

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Benchling v3 API
  version: 1.0.0
extends: ../openapi/benchling-v3-openapi.yaml
x-provenance:
  generated: '2026-08-15'
  method: generated
  source: >-
    Generated by the API Evangelist enrichment pipeline. Captures the facts this
    repo established about the Benchling v3 API that the published spec leaves
    implicit — the real tenant-templated server, the external documentation, the
    contact and licence, the error format, the rate-limit signalling, and the
    absence of an idempotency key. The original spec at
    openapi/benchling-v3-openapi.yaml is never mutated.
actions:
  - target: $.info
    description: >-
      The published spec carries only a title, version and licence. Add the
      description, contact and terms Benchling publishes elsewhere.
    update:
      description: >-
        Benchling's unified v3 REST API — 805 paths and 874 operations spanning
        the electronic lab notebook, registry, inventory, assay results and
        workflow execution. Errors are RFC 9457 problem details
        (application/problem+json). Every operation is tagged with a rate-limit
        tier (x-bnch-rate-limit-tier 1-5). Beta operations on this same base
        path are gated behind the EARLY-ACCESS request header.
      contact:
        name: Benchling Support
        email: support@benchling.com
        url: https://docs.benchling.com/docs/developer-platform-overview
      termsOfService: https://www.benchling.com/agreements-and-terms
  - target: $.servers
    description: >-
      The published spec declares only the relative path "/api/v3", which is not
      resolvable on its own. Benchling is tenant-scoped: every customer has its
      own subdomain, documented at
      https://docs.benchling.com/docs/authentication.
    update:
      - url: https://{tenant}.benchling.com/api/v3
        description: Benchling tenant API host
        variables:
          tenant:
            default: benchling
            description: >-
              Your Benchling tenant subdomain — e.g. yourcompany for
              yourcompany.benchling.com. Enterprise customers must use their own
              company URL.
  - target: $
    description: Add external documentation, absent from the published spec.
    update:
      externalDocs:
        description: Benchling Developer Platform documentation
        url: https://docs.benchling.com/docs/developer-platform-overview
  - target: $.components.schemas.GeneralError
    description: >-
      Name the standard this schema implements so tooling can recognise it as
      RFC 9457 problem details rather than a bespoke envelope.
    update:
      title: Problem Details (RFC 9457)
      description: >-
        RFC 9457 problem detail object, returned as application/problem+json.
        Members type, title, detail, status and instance are all required. See
        errors/benchling-problem-types.yml.
      externalDocs:
        description: RFC 9457 — Problem Details for HTTP APIs
        url: https://www.rfc-editor.org/rfc/rfc9457
  - target: $.components.schemas.InternalServerError
    description: Document the errorId member, which is the value to quote to Benchling support.
    update:
      description: >-
        RFC 9457 problem detail for a 500, extended with an `errorId` member
        that correlates the failure with Benchling's internal logs. Quote it
        when contacting support@benchling.com.
  - target: $.components.securitySchemes.oAuth
    description: >-
      Record that the empty scopes object is deliberate — Benchling has no API
      scopes and authorizes by organization/team/project membership.
    update:
      description: >-
        OAuth 2.0 client credentials flow for Benchling Apps (service
        principals). NOTE: Benchling defines NO OAuth scopes. An app's
        authority is whatever an administrator has granted it by adding it to
        organizations, teams and projects — the same model applied to users. See
        scopes/benchling-scopes.yml.
  - target: $.components.securitySchemes.basicApiKeyAuth
    description: Spell out the empty-password convention that trips up first-time callers.
    update:
      description: >-
        HTTP Basic with the user API key as the USERNAME and an EMPTY password
        (note the trailing colon in `curl -u KEY:`). Requests that fail
        authentication return 401. Keys are rotated from Profile settings.
  - target: $.components.parameters.pageSize
    description: Cross-reference the documented pagination contract.
    update:
      description: >-
        Number of results to return. Defaults to 50, maximum 100. Every list
        endpoint is paginated; continue with the opaque nextToken cursor. See
        conventions/benchling-conventions.yml.
  - target: $.components.responses.TooManyRequests
    description: >-
      Attach the runtime rate-limit signalling an agent needs, which the spec
      does not express.
    update:
      description: >-
        Too Many Requests. Returned when a request-rate limit (60/30s per tenant
        across user keys, 300/30s per app key, 1000/30s per tenant across apps)
        or the dynamic hourly throughput limit is exceeded. Responses carry
        x-rate-limit-limit, x-rate-limit-remaining and x-rate-limit-reset; there
        is NO Retry-After header. Requests refused with 429 are not queued for
        resubmission — retry with exponential backoff plus jitter, capped around
        15 seconds. See rate-limits/benchling-rate-limits.yml.
  - target: $.paths.*.*.parameters
    description: >-
      No idempotency key exists anywhere in this API. Recorded once, as an
      overlay-level fact, rather than injected into 874 operations — a retried
      POST can create a duplicate object.
    update: []
x-notes:
  idempotency: >-
    NOT SUPPORTED. Benchling publishes no Idempotency-Key header and none
    appears in the spec. The documented mitigations are the Batch/Bulk write
    families and 429 backoff.
  webhooks: >-
    The spec's top-level `webhooks` object declares 14 v3.* events. A second,
    separate v2.* event stream is delivered through Amazon EventBridge and is
    not in the OpenAPI at all — see asyncapi/benchling-webhooks.yml.
  rate_limit_tiers: >-
    x-bnch-rate-limit-tier assigns every operation a cost class 1-5 (observed
    distribution: tier 2 = 130, tier 3 = 132, tier 4 = 427, tier 5 = 184). The
    per-tier numbers are not published.

Work with this as data

Every overlay 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 openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • 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 overlay
curl "https://apis.io/api/v1/overlays/benchling-v3-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?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.