API · 2 min read

Authentication

API keys, OAuth, what needs no credential, and Idempotency-Key.

Reading a public or unlisted presentation needs no credential; everything else sends one bearer credential, an API key or an OAuth token.

What needs no credential

  • GET /api/presentations/spec and GET /api/presentations/spec/{part}, the authoring format.
  • GET /api/presentations/context and its batch form, for public and unlisted presentations. Send a credential to read your own private ones, and for the larger rate limit.
  • GET /api/oembed.
  • POST /docs/mcp, the documentation MCP server.

The header

Both credentials go in the same header, on every call to the REST API and to the presentations MCP server:

Authorization: Bearer <credential>

A missing, expired, or revoked credential is a 401; see Errors.

API keys

An API key starts with bisque_live_. Use one for scripts, CLIs, and coding agents on your machine. Create it at bisque.cloud/setup/keys, or run bisque login: it prints a pairing code, you approve the code in the browser, and the key lands in the CLI's config. Keys do not expire; rotate or revoke them on the same page.

Some endpoints take API keys only: the live creation endpoints under /v1/presentations, and POST /api/presentations/publish-narrated.

OAuth

An OAuth access token starts with bisque_oat_. Use OAuth for hosted chat products where nobody can paste a key, such as a ChatGPT connector or a Claude custom connector. Bisque is an OAuth 2.1 authorization server with PKCE (S256) and dynamic client registration; the issuer is https://bisque.cloud. You register a client with no user identity, the user signs in and approves it, and you exchange the code for a token.

  • Access tokens last one hour.
  • Refresh tokens last 90 days and rotate on use: the old one is revoked in the same call that returns the new pair.
  • Scopes: presentations (publish, list, and read presentations as the user), openid, and email.

The /api/presentations/... endpoints and the presentations MCP server accept an OAuth token wherever they accept an API key, except the API-key-only endpoints above. The step-by-step for agents, in the order they run it, is /auth.md: discovery, registration, the claim, refresh, and revocation. A user disconnects a client at any time from bisque.cloud/account, under Connected apps, which revokes every token it holds.

Idempotency-Key

Send an Idempotency-Key header (a UUID) on every POST that publishes: POST /api/presentations/create, POST /v1/presentations, and POST /api/presentations/publish-narrated. If the network drops after the request went through, retry with the same key and body and you get the first response back, marked Idempotent-Replayed: true, instead of a second presentation. The same key with a different body is a 422 IDEMPOTENCY_KEY_REUSED. Keys last 24 hours. The SDK sends one on every POST.

Back to the API overview. The same credentials work on the MCP servers.