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/benchling:benchling-featurelibrary-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: 3.2.0
info:
title: Benchling Feature Library API
version: 2.0.0
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
description: 'Operations tagged FeatureLibrary across 2 of this provider''s published API definitions: benchling-openapi.yml, benchling-v3-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: /api/v3
security:
- oAuth: []
- basicApiKeyAuth: []
tags:
- description: 'Represents a reusable collection of biological features for auto-annotating nucleotide and AA sequences.
FeatureLibraries enable users to define common sequence motifs (such as genes, promoters, terminators, or
protein domains) with associated patterns, then automatically detect and annotate those features across many
sequences. Each library contains `FeatureLibraryItem`s that specify the pattern to match and the annotation
details to apply. Libraries can be shared with collaborators through ownership and permission controls, making
them useful for standardizing annotation practices across a team. When running auto-annotate on a sequence,
users select which libraries to search against.'
name: FeatureLibrary
x-bnch-organization: Benchling
x-displayName: Feature Library
paths:
/feature-library:
post:
description: Create FeatureLibrary.
operationId: FeatureLibrary.Create
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateFeatureLibraryInput'
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureLibrary'
description: Created
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
summary: Create FeatureLibrary
tags:
- FeatureLibrary
servers:
- url: /api/v3
/feature-library/items:
get:
description: List FeatureLibrary items.
operationId: FeatureLibrary.List
parameters:
- $ref: '#/components/parameters/createdAt.gt'
- $ref: '#/components/parameters/createdAt.gte'
- $ref: '#/components/parameters/createdAt.lt'
- $ref: '#/components/parameters/createdAt.lte'
- $ref: '#/components/parameters/id.anyOf'
- $ref: '#/components/parameters/modifiedAt.gt'
- $ref: '#/components/parameters/modifiedAt.gte'
- $ref: '#/components/parameters/modifiedAt.lt'
- $ref: '#/components/parameters/modifiedAt.lte'
- $ref: '#/components/parameters/name.anyOf'
- $ref: '#/components/parameters/name.anyOf.caseSensitive'
- $ref: '#/components/parameters/nextToken'
- $ref: '#/components/parameters/omit'
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/returning'
- description: 'Method by which to order results. Valid sorts are: createdAt (created time, oldest first) and modifiedAt (modified time, oldest first). Use :asc or :desc to specify ascending or descending order. Default is modifiedAt:desc.'
in: query
name: sort
schema:
default: modifiedAt:desc
enum:
- createdAt:asc
- createdAt:desc
- modifiedAt:asc
- modifiedAt:desc
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureLibraryPaginatedList'
description: OK
headers: {}
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
summary: List FeatureLibrary items
tags:
- FeatureLibrary
servers:
- url: /api/v3
/feature-library/{feature_library_id}:
get:
description: Get a single FeatureLibrary by ID.
operationId: FeatureLibrary.Get
parameters:
- description: ID of the FeatureLibrary.
in: path
name: feature_library_id
required: true
schema:
type: string
- $ref: '#/components/parameters/returning'
- $ref: '#/components/parameters/omit'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureLibrary'
description: OK
headers: {}
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
summary: Get FeatureLibrary by ID
tags:
- FeatureLibrary
patch:
description: Update FeatureLibrary.
operationId: FeatureLibrary.Update
parameters:
- description: ID of the FeatureLibrary.
in: path
name: feature_library_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFeatureLibraryInput'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureLibrary'
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
summary: Update FeatureLibrary
tags:
- FeatureLibrary
servers:
- url: /api/v3
/feature-library/{feature_library_id}/features/items:
get:
description: List FeatureLibraryItem items.
operationId: FeatureLibrary.features.List
parameters:
- $ref: '#/components/parameters/createdAt.gt'
- $ref: '#/components/parameters/createdAt.gte'
- $ref: '#/components/parameters/createdAt.lt'
- $ref: '#/components/parameters/createdAt.lte'
- $ref: '#/components/parameters/id.anyOf'
- $ref: '#/components/parameters/modifiedAt.gt'
- $ref: '#/components/parameters/modifiedAt.gte'
- $ref: '#/components/parameters/modifiedAt.lt'
- $ref: '#/components/parameters/modifiedAt.lte'
- $ref: '#/components/parameters/nextToken'
- $ref: '#/components/parameters/pageSize'
- description: ID of the FeatureLibrary.
in: path
name: feature_library_id
required: true
schema:
type: string
- description: 'Method by which to order results. Valid sorts are: createdAt (created time, oldest first) and modifiedAt (modified time, oldest first). Use :asc or :desc to specify ascending or descending order. Default is modifiedAt:desc.'
in: query
name: sort
schema:
default: modifiedAt:desc
enum:
- createdAt:asc
- createdAt:desc
- modifiedAt:asc
- modifiedAt:desc
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureLibraryItemPaginatedList'
description: OK
headers: {}
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
summary: List FeatureLibraryItem items
tags:
- FeatureLibrary
servers:
- url: /api/v3
/feature-library:batch-create:
post:
description: Batch create FeatureLibrary synchronously in one transaction. Maximum 25 items per request.
operationId: FeatureLibrary.BatchCreate
requestBody:
content:
application/json:
schema:
additionalProperties: false
properties:
items:
items:
$ref: '#/components/schemas/CreateFeatureLibraryInput'
maxItems: 25
minItems: 1
type: array
required:
- items
type: object
responses:
'201':
content:
application/json:
schema:
additionalProperties: false
properties:
items:
items:
$ref: '#/components/schemas/FeatureLibrary'
type: array
required:
- items
type: object
description: Created
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
summary: Batch create FeatureLibrary
tags:
- FeatureLibrary
servers:
- url: /api/v3
/feature-library:batch-update:
patch:
description: Batch update FeatureLibrary synchronously in one transaction. Maximum 25 items per request.
operationId: FeatureLibrary.BatchUpdate
requestBody:
content:
application/json:
schema:
additionalProperties: false
properties:
items:
items:
$ref: '#/components/schemas/UpdateFeatureLibraryInputWithPathParams'
maxItems: 25
minItems: 1
type: array
required:
- items
type: object
responses:
'200':
content:
application/json:
schema:
additionalProperties: false
properties:
items:
items:
$ref: '#/components/schemas/FeatureLibrary'
type: array
required:
- items
type: object
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
summary: Batch update FeatureLibrary
tags:
- FeatureLibrary
servers:
- url: /api/v3
/feature-library:bulk-create:
post:
description: Bulk create FeatureLibrary.
operationId: FeatureLibrary.BulkCreate
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkImport'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncTaskLink'
description: Task started
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
summary: Bulk create FeatureLibrary
tags:
- FeatureLibrary
servers:
- url: /api/v3
/feature-library:bulk-update:
patch:
description: Bulk update FeatureLibrary.
operationId: FeatureLibrary.BulkUpdate
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkImport'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncTaskLink'
description: Task started
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
summary: Bulk update FeatureLibrary
tags:
- FeatureLibrary
servers:
- url: /api/v3
components:
schemas:
FeatureLibraryItemPaginatedList:
additionalProperties: false
properties:
items:
items:
$ref: '#/components/schemas/FeatureLibraryItem'
type: array
nextToken:
type:
- string
- 'null'
type: object
UpdateFeatureLibraryInput:
additionalProperties: false
example:
description: Updated promoter motifs for auto-annotation.
name: Common promoters (v2)
properties:
description:
description: Description of the Feature Library
type:
- 'null'
- string
name:
description: Library names must be non-empty after trimming whitespace, at most 128 characters, and unique within the owner (case-insensitive).
type: string
type: object
OwnerRef:
properties:
__typename:
type: string
id:
format: api_id
type: string
type: object
FeatureLibrary:
description: 'Represents a reusable collection of biological features for auto-annotating nucleotide and AA sequences.
FeatureLibraries enable users to define common sequence motifs (such as genes, promoters, terminators, or
protein domains) with associated patterns, then automatically detect and annotate those features across many
sequences. Each library contains `FeatureLibraryItem`s that specify the pattern to match and the annotation
details to apply. Libraries can be shared with collaborators through ownership and permission controls, making
them useful for standardizing annotation practices across a team. When running auto-annotate on a sequence,
users select which libraries to search against.'
properties:
__typename:
type: string
createdAt:
description: DateTime the Feature Library was created
format: datetime
type: string
description:
description: Description of the Feature Library
type:
- 'null'
- string
features:
description: List of Feature Library Items in this library
format: uri
type: string
id:
type: string
modifiedAt:
description: DateTime the Feature Library was last modified
format: datetime
type: string
name:
description: Name of the Feature Library
type: string
owner:
$ref: '#/components/schemas/OwnerRef'
type: object
GeneralError:
properties:
detail:
type:
- 'null'
- string
- object
instance:
type: string
invalidId:
type: string
status:
type: integer
title:
type:
- 'null'
- string
type:
type: string
required:
- type
- title
- detail
- status
- instance
type: object
TooManyRequestsError:
properties:
detail:
type:
- 'null'
- string
- object
instance:
type: string
invalidId:
type: string
status:
type: integer
title:
type:
- 'null'
- string
type:
type: string
required:
- type
- title
- detail
- status
- instance
type: object
FeatureLibraryItem:
description: 'Represents a single feature definition within a FeatureLibrary used for auto-annotation.
Each item defines a searchable pattern (nucleotide or amino acid sequence), a feature type
classification (such as ''gene'', ''promoter'', or ''domain''), a display name, and a color for
visualization. When auto-annotate runs against a sequence, the pattern is matched according
to the matchType (see FeatureLibraryMatchType), and matching regions are annotated with the
item''s name, type, and color. Patterns can include special characters for flexible matching,
such as wildcards for arbitrary bases or optional flanking regions.'
properties:
__typename:
type: string
color:
description: The color of the annotations generated by the Feature Library Item. Must be a valid hex string
type: string
createdAt:
description: DateTime the Feature Library Item was created
format: datetime
type: string
featureLibrary:
$ref: '#/components/schemas/FeatureLibraryRef'
description: The Feature Library the Feature Library Item belongs to
featureType:
description: 'The type of the Feature Library Item, like gene, promoter, etc. Note: This is an arbitrary string, not an enum'
type:
- 'null'
- string
id:
type: string
matchType:
description: The match type of the Feature Library Item. Used to determine how auto-annotate matches are made
enum:
- NUCLEOTIDE
- AA_SEQUENCE
type: string
modifiedAt:
description: DateTime the Feature Library Item was last modified
format: datetime
type: string
name:
description: The name of the Feature Library Item
type: string
pattern:
description: The pattern used for matching during auto-annotation
type: string
type: object
UpdateFeatureLibraryInputWithPathParams:
additionalProperties: false
example:
description: Updated promoter motifs for auto-annotation.
id: featlib_cWYhFmxq
name: Common promoters (v2)
properties:
description:
description: Description of the Feature Library
type:
- 'null'
- string
id:
type: string
name:
description: Library names must be non-empty after trimming whitespace, at most 128 characters, and unique within the owner (case-insensitive).
type: string
required:
- id
type: object
CreateFeatureLibraryInput:
additionalProperties: false
example:
description: Promoter motifs used for auto-annotation across plasmids.
name: Common promoters
ownerId: ent_o2thOLlq
properties:
description:
description: Description of the Feature Library
type: string
name:
description: Library names must be non-empty after trimming whitespace, at most 128 characters, and unique within the owner (case-insensitive).
type: string
ownerId:
description: The API ID of the user or organization that owns the feature library.
type: string
required:
- name
- ownerId
type: object
FeatureLibraryRef:
properties:
__typename:
type: string
id:
format: api_id
type: string
type: object
AsyncTaskLink:
properties:
pollingUri:
format: uri
type: string
taskId:
type: string
type: object
BulkImport:
example:
fileId: scrfile_jdf8BV24kLmN
properties:
fileId:
description: The API ID of the scratch file (`scrfile_XXXXXXXX`) containing the items to import. The referenced file must be a scratch file whose upload has completed successfully.
type: string
required:
- fileId
type: object
InternalServerError:
properties:
detail:
type:
- 'null'
- string
- object
errorId:
type: string
instance:
type: string
status:
type: integer
title:
type:
- 'null'
- string
type:
type: string
required:
- type
- title
- detail
- status
- instance
type: object
FeatureLibraryPaginatedList:
additionalProperties: false
properties:
items:
items:
$ref: '#/components/schemas/FeatureLibrary'
type: array
nextToken:
type:
- string
- 'null'
type: object
FeatureLibraryItemPaginatedList_2:
additionalProperties: false
properties:
items:
items:
$ref: '#/components/schemas/FeatureLibraryItem'
type: array
nextToken:
type: string
type: object
GeneralError_2:
properties:
detail:
type:
- 'null'
- string
- object
instance:
type: string
status:
type: integer
title:
type:
- 'null'
- string
type:
type: string
required:
- type
- title
- detail
- status
- instance
type: object
FeatureLibraryPaginatedList_2:
additionalProperties: false
properties:
items:
items:
$ref: '#/components/schemas/FeatureLibrary'
type: array
nextToken:
type: string
type: object
responses:
InternalServerError:
content:
application/problem+json:
schema:
$ref: '#/components/schemas/InternalServerError'
description: Internal Server Error
BadRequest:
content:
application/problem+json:
schema:
$ref: '#/components/schemas/GeneralError'
description: Bad Request
NotFound:
content:
application/problem+json:
schema:
$ref: '#/components/schemas/GeneralError'
description: Not Found
Forbidden:
content:
application/problem+json:
schema:
$ref: '#/components/schemas/GeneralError'
description: Forbidden
Conflict:
content:
application/problem+json:
schema:
$ref: '#/components/schemas/GeneralError'
description: Conflict
TooManyRequests:
content:
application/problem+json:
schema:
$ref: '#/components/schemas/TooManyRequestsError'
description: Too Many Requests
headers:
Retry-After:
description: Minimum number of seconds to wait before retrying. Only included when the request exceeded a rate limit specific to the caller. Limits shared with other callers, such as tenant-wide limits, omit this header because the wait depends on their traffic.
required: false
schema:
minimum: 1
type: integer
TooManyRequests_2:
content:
application/problem+json:
schema:
$ref: '#/components/schemas/GeneralError_2'
description: Too Many Requests
parameters:
modifiedAt.gte:
description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified at or after the specified time. e.g. >= 2017-04-30.
in: query
name: modifiedAt.gte
schema:
format: datetime
type: string
createdAt.lte:
description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created at or before the specified time. e.g. <= 2017-04-30.
in: query
name: createdAt.lte
schema:
format: datetime
type: string
omit:
description: Comma-separated list of top-level fields to omit from each returned item. Cannot overlap with returning.
explode: false
in: query
name: omit
schema:
items:
type: string
type: array
modifiedAt.lte:
description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified at or before the specified time. e.g. <= 2017-04-30.
in: query
name: modifiedAt.lte
schema:
format: datetime
type: string
name.anyOf:
description: Restricts results to those that match any of the specified names. Case insensitive. Warning - this filter can be non-performant due to case insensitivity. Ensure only one name filter is used at a time. Comma-separated list.
explode: false
in: query
name: name.anyOf
schema:
items:
type: string
maxItems: 100
type: array
createdAt.gt:
description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created after the specified time. e.g. > 2017-04-30.
in: query
name: createdAt.gt
schema:
format: datetime
type: string
nextToken:
description: Token for pagination
in: query
name: nextToken
schema:
type: string
name.anyOf.caseSensitive:
description: Restricts results to those that match any of the specified names. Case sensitive. Ensure only one name filter is used at a time. Comma-separated list.
explode: false
in: query
name: name.anyOf.caseSensitive
schema:
items:
type: string
maxItems: 100
type: array
modifiedAt.gt:
description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified after the specified time. e.g. > 2017-04-30.
in: query
name: modifiedAt.gt
schema:
format: datetime
type: string
pageSize:
description: Number of results to return. Defaults to 50, maximum of 100.
in: query
name: pageSize
schema:
type: integer
modifiedAt.lt:
description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified before the specified time. e.g. < 2017-04-30.
in: query
name: modifiedAt.lt
schema:
format: datetime
type: string
returning:
description: Comma-separated list of top-level fields to include in each returned item. Cannot overlap with omit.
explode: false
in: query
name: returning
schema:
items:
type: string
type: array
createdAt.gte:
description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created at or after the specified time. e.g. >= 2017-04-30.
in: query
name: createdAt.gte
schema:
format: datetime
type: string
createdAt.lt:
description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created before the specified time. e.g. < 2017-04-30.
in: query
name: createdAt.lt
schema:
format: datetime
type: string
id.anyOf:
description: Restricts results to those matching any of the specified IDs. Comma-separated list.
explode: false
in: query
name: id.anyOf
schema:
items:
type: string
maxItems: 100
type: array
securitySchemes:
BearerAuth:
description: Use a short-lived V3 API Explorer token.
scheme: bearer
type: http
x-fern-playground-description: Copy a short-lived V3 API Explorer token from the user's settings page
basicApiKeyAuth:
description: Use issued API key for standard access to the API
scheme: basic
type: http
basicClientIdSecretAuth:
description: Auth used as part of client credentials OAuth flow prior to receiving a bearer token.
scheme: basic
type: http
oAuth:
description: OAuth2 Client Credentials flow intended for service access
flows:
clientCredentials:
scopes: {}
tokenUrl: /oauth/token
type: oauth2
x-refined-from:
- benchling-openapi.yml
- benchling-v3-openapi.yaml