Browserbase Secrets API
The Secrets API from Browserbase — 3 operation(s) for secrets.
The Secrets API from Browserbase — 3 operation(s) for secrets.
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/browserbase:browserbase-secrets-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: Browserbase Secrets API
description: Browserbase API for 3rd party developers
version: v1
servers:
- url: https://api.browserbase.com
description: Public endpoint
variables: {}
security:
- BrowserbaseAuth: []
tags:
- name: Secrets
paths:
/v1/secrets:
get:
operationId: Secrets_list
summary: List Secrets
description: List project secrets. Supports filtering by creation time.
parameters:
- name: startAt
in: query
description: Only return secrets created on or after this timestamp (inclusive). RFC 3339, e.g. 2026-01-19T00:00:00Z.
required: false
schema:
type: string
format: date-time
- name: endAt
in: query
description: Only return secrets created on or before this timestamp (inclusive). RFC 3339, e.g. 2026-01-20T00:00:00Z.
required: false
schema:
type: string
format: date-time
- name: limit
in: query
description: Maximum number of results to return.
required: false
schema:
type: integer
default: 20
maximum: 1000
minimum: 1
- name: cursor
in: query
description: Pagination cursor. Pass the nextCursor from the previous response to fetch the next page. Omit to start from the first page.
required: false
schema:
type: string
responses:
'200':
description: The page of matching secrets.
content:
application/json:
schema:
description: A page of secrets.
type: object
properties:
data:
description: The page of matching secrets.
type: array
items:
$ref: '#/components/schemas/Secret'
limit:
description: The maximum number of results returned in this page.
type: integer
nextCursor:
description: Cursor for the next page. Pass it back as `cursor` on the next request to continue paging. null when there are no more results.
anyOf:
- type: string
required:
- data
- limit
- nextCursor
'400':
description: Invalid query parameters or cursor, or startAt is after endAt.
content:
application/json:
schema:
type: object
properties:
statusCode:
description: HTTP status code
type: integer
error:
description: HTTP error name
type: string
message:
description: Human-readable error message
type: string
required:
- statusCode
- error
- message
tags:
- Secrets
post:
operationId: Secrets_create
summary: Create a Secret
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
secretKey:
description: The name to store the secret value under.
type: string
sealedSecretValue:
description: 'The secret value encrypted with HPKE. To seal the secret value before sending, get the project''s public key from GET /v1/secrets/keypair. Decode the publicKey using base64 into the raw 32-byte public key. Then, use HPKE Base mode (RFC 9180) with the following algorithm suite: DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, and AES-256-GCM. Set both info and additional authenticated data (AAD) to an empty byte string. Then, create a new sender context using the public key and these settings, and encrypt the secret value as one message. Put the 32-byte encapsulated key before the ciphertext and keep the authentication tag at the end of the ciphertext. Encode the combined bytes with standard base64. Send the result as sealedSecretValue: base64(enc || ciphertext)'
type: string
keypairId:
description: The `id` returned by GET /v1/secrets/keypair, identifying the keypair whose public key encrypted the value. Recorded with the secret so decryption stays correct across keypair rotation.
type: string
required:
- secretKey
- sealedSecretValue
- keypairId
responses:
'201':
description: The request has succeeded and a new resource was created.
content:
application/json:
schema:
$ref: '#/components/schemas/Secret'
'400':
description: Invalid request, or keypairId does not identify an active keypair in the project. If the keypair is no longer active, fetch GET /v1/secrets/keypair, seal the value again, and retry.
content:
application/json:
schema:
type: object
properties:
statusCode:
description: HTTP status code
type: integer
error:
description: HTTP error name
type: string
message:
description: Human-readable error message
type: string
required:
- statusCode
- error
- message
'409':
description: A secret with this name already exists in the project.
content:
application/json:
schema:
type: object
properties:
statusCode:
description: HTTP status code
type: integer
error:
description: HTTP error name
type: string
message:
description: Human-readable error message
type: string
required:
- statusCode
- error
- message
tags:
- Secrets
/v1/secrets/keypair:
get:
operationId: Secrets_getKeypair
summary: Get a Keypair
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
$ref: '#/components/schemas/SecretsKeypair'
tags:
- Secrets
/v1/secrets/{id}:
get:
operationId: Secrets_get
summary: Get a Secret
parameters:
- name: id
in: path
description: The id of the project secret to retrieve.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: The secret metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/Secret'
'400':
description: Invalid secret ID. The ID must be a UUID.
content:
application/json:
schema:
type: object
properties:
statusCode:
description: HTTP status code
type: integer
error:
description: HTTP error name
type: string
message:
description: Human-readable error message
type: string
required:
- statusCode
- error
- message
'404':
description: The secret does not exist in the project.
content:
application/json:
schema:
type: object
properties:
statusCode:
description: HTTP status code
type: integer
error:
description: HTTP error name
type: string
message:
description: Human-readable error message
type: string
required:
- statusCode
- error
- message
tags:
- Secrets
delete:
operationId: Secrets_delete
summary: Delete a Secret
parameters:
- name: id
in: path
description: The id of the project secret to delete.
required: true
schema:
type: string
format: uuid
responses:
'204':
description: The secret has been deleted.
'400':
description: Invalid secret ID. The ID must be a UUID.
content:
application/json:
schema:
type: object
properties:
statusCode:
description: HTTP status code
type: integer
error:
description: HTTP error name
type: string
message:
description: Human-readable error message
type: string
required:
- statusCode
- error
- message
'404':
description: The secret does not exist in the project.
content:
application/json:
schema:
type: object
properties:
statusCode:
description: HTTP status code
type: integer
error:
description: HTTP error name
type: string
message:
description: Human-readable error message
type: string
required:
- statusCode
- error
- message
tags:
- Secrets
patch:
operationId: Secrets_update
summary: Update a Secret
description: Replace a secret's value. The name cannot be changed; to rename, create a new secret and delete the old one.
parameters:
- name: id
in: path
description: The id of the project secret to update.
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sealedSecretValue:
description: 'The new secret value encrypted with HPKE. To seal the secret value before sending, get the project''s public key from GET /v1/secrets/keypair. Decode the publicKey using base64 into the raw 32-byte public key. Then, use HPKE Base mode (RFC 9180) with the following algorithm suite: DHKEM(X25519, HKDF-SHA256), HKDF-SHA256, and AES-256-GCM. Set both info and additional authenticated data (AAD) to an empty byte string. Then, create a new sender context using the public key and these settings, and encrypt the secret value as one message. Put the 32-byte encapsulated key before the ciphertext and keep the authentication tag at the end of the ciphertext. Encode the combined bytes with standard base64. Send the result as sealedSecretValue: base64(enc || ciphertext)'
type: string
keypairId:
description: The `id` returned by GET /v1/secrets/keypair, identifying the keypair whose public key encrypted the value. Recorded with the secret so decryption stays correct across keypair rotation.
type: string
required:
- sealedSecretValue
- keypairId
responses:
'200':
description: The updated secret.
content:
application/json:
schema:
$ref: '#/components/schemas/Secret'
'400':
description: Invalid request, or keypairId does not identify an active keypair in the project. If the keypair is no longer active, fetch GET /v1/secrets/keypair, seal the value again, and retry.
content:
application/json:
schema:
type: object
properties:
statusCode:
description: HTTP status code
type: integer
error:
description: HTTP error name
type: string
message:
description: Human-readable error message
type: string
required:
- statusCode
- error
- message
'404':
description: The secret does not exist in the project.
content:
application/json:
schema:
type: object
properties:
statusCode:
description: HTTP status code
type: integer
error:
description: HTTP error name
type: string
message:
description: Human-readable error message
type: string
required:
- statusCode
- error
- message
tags:
- Secrets
components:
schemas:
SecretsKeypair:
type: object
properties:
id:
description: Identifier of the keypair the public key was minted from. Pass this back when creating a secret so the ciphertext records which keypair sealed it, which keeps decryption correct across keypair rotation.
type: string
publicKey:
description: The project's HPKE public encryption key, base64-encoded. Encrypt secret values with this key before creating a secret.
type: string
required:
- id
- publicKey
Secret:
type: object
properties:
id:
description: Unique identifier of the secret.
type: string
secretKey:
description: The name the secret value is stored under.
type: string
required:
- id
- secretKey
securitySchemes:
BrowserbaseAuth:
type: apiKey
in: header
name: X-BB-API-Key
description: Your [Browserbase API Key](https://www.browserbase.com/settings).
x-provenance:
method: harvested
publisher: Browserbase
source: https://docs.browserbase.com/reference/api/openapi.v1.yaml
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)