Bluma · Authentication Profile
Bluma Authentication
Authentication
Bluma declares 3 security scheme(s) across its OpenAPI definitions.
CompanyArtificial IntelligenceVideoVideo GenerationAdvertisingMarketingContent CreationShort-Form VideoSocial-MediaGenerative AICreative ToolsText-to-SpeechMediaAutomationWebhook
Methods:
Schemes: 3
OAuth flows:
API key in:
Security Schemes
http
scheme: bearer
oauth2
· flows:
http
scheme: bearer
Source
Authentication Profile
generated: '2026-08-12'
method: searched
source: >-
https://docs.getbluma.com/authentication ,
https://docs.getbluma.com/api-reference/overview ,
https://api.getbluma.com/.well-known/oauth-protected-resource ,
https://clerk.getbluma.com/.well-known/oauth-authorization-server
docs: https://docs.getbluma.com/authentication
note: >-
Bluma runs two independent authentication models against the same API host. The REST
API at /api/v1 uses long-lived prefixed API keys presented as HTTP bearer tokens; the
MCP server at /api/mcp uses OAuth 2.1 delegated to Clerk. There is no published
OpenAPI securitySchemes block to derive from — the advertised spec at
/api/v1/openapi.json returns 401 — so this profile is read from the documentation and
from live anonymous metadata probes.
schemes:
- id: api_key_bearer
type: http
scheme: bearer
applies_to: REST API (https://api.getbluma.com/api/v1)
header: Authorization
format: 'Bearer <api_key>'
key_prefixes:
- prefix: bluma_test_
environment: test
behavior: >-
Watermarked, lower-quality (720p max, 24fps) renders; consumes no credits;
unlimited keys; same rate limit as the account tier.
- prefix: bluma_live_
environment: production
behavior: Full-quality renders up to 4K, no watermark, credits charged, priority processing.
scoped: true
scopes_source: scopes/bluma-scopes.yml
issuance:
- channel: dashboard
url: https://app.getbluma.com/settings?tab=api
note: Create API Key; the secret is displayed exactly once.
- channel: api
operation: POST /api/v1/api-keys
note: >-
Requires an existing session token, not an API key. Accepts name, environment
(test|production) and rate_limit_per_hour.
rotation:
supported: true
operation: POST /api/v1/api-keys/{id}/rotate
behavior: >-
Issues a new key and schedules the old key to expire in 30 days, enabling
zero-downtime rotation.
recommended_interval: 90 days
revocation:
supported: true
operation: DELETE /api/v1/api-keys/{id}
behavior: Immediate; all requests using that key stop.
listing:
supported: true
operation: GET /api/v1/api-keys
behavior: Returns keys with a truncated prefix; never re-exposes the full secret.
failure_modes:
- status: 401
type: authentication_error
title: Authentication Required
cause: Missing API key
- status: 401
type: authentication_error
title: Invalid API Key
cause: Key is invalid or revoked; response metadata echoes the key_prefix
- status: 403
type: permission_denied
title: Insufficient Permissions
cause: >-
Key lacks the required scope; response metadata names required_scope and
available_scopes
- id: oauth2_clerk
type: oauth2
applies_to: MCP server (https://api.getbluma.com/api/mcp)
flows:
authorizationCode:
authorizationUrl: https://clerk.getbluma.com/oauth/authorize
tokenUrl: https://clerk.getbluma.com/oauth/token
refreshUrl: https://clerk.getbluma.com/oauth/token
scopes:
email: Access the user's email address
profile: Access the user's basic profile
offline_access: Issue a refresh token for long-lived agent sessions
issuer: https://clerk.getbluma.com
identity_provider: Clerk
pkce_required_methods:
- S256
dynamic_client_registration:
supported: true
endpoint: https://clerk.getbluma.com/oauth/register
revocation_endpoint: https://clerk.getbluma.com/oauth/token/revoke
jwks_uri: https://clerk.getbluma.com/.well-known/jwks.json
id_token_signing_alg_values_supported:
- RS256
token_endpoint_auth_methods_supported:
- client_secret_basic
- client_secret_post
- none
discovery:
- spec: RFC 9728 Protected Resource Metadata
url: https://api.getbluma.com/.well-known/oauth-protected-resource
status: 200
- spec: RFC 8414 Authorization Server Metadata
url: https://clerk.getbluma.com/.well-known/oauth-authorization-server
status: 200
- spec: OpenID Connect Discovery 1.0
url: https://clerk.getbluma.com/.well-known/openid-configuration
status: 200
documented_in_provider_docs: false
- id: session_token
type: http
scheme: bearer
applies_to: API key management operations (POST/GET/DELETE /api/v1/api-keys)
note: >-
The docs show these operations authenticated with "YOUR_SESSION_TOKEN" rather than an
API key, implying a dashboard session credential. The docs never define how a session
token is obtained outside the dashboard, which makes fully programmatic key
provisioning undocumented.
documented_issuance: false
webhook_authentication:
direction: inbound-to-consumer
scheme: HMAC-SHA256
header: X-Bluma-Signature
format: 'sha256=<hex digest>'
signed_payload: raw request body
secret_issuance: >-
Returned once in the POST /api/v1/webhooks response as a whsec_-prefixed secret.
helper: Bluma.webhooks.verify() in both the TypeScript and Python SDKs
additional_headers:
- X-Bluma-Event-Id
- X-Bluma-Event-Type
- 'User-Agent: Bluma-Webhooks/1.0'
transport_security:
https_required: true
hsts: true
hsts_max_age: 31536000
hsts_preload: true
gaps:
- No mTLS, no openIdConnect scheme on the REST surface, no short-lived token exchange —
the REST API is long-lived-static-secret only.
- The OAuth scopes exposed to MCP clients are identity scopes (email, profile,
offline_access) and do not correspond to the REST product scopes, so what an MCP token
is authorized to do inside Bluma is not stated anywhere public.
- Session-token issuance is referenced but never documented, so API key lifecycle cannot
be fully automated from the published material.
Work with this as data
Every security artifact 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 security posture
4 MCP tools reach this
find_securityBrowse and filter every security artifact 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.
Call it yourself
curl for this page
This security artifact
curl "https://apis.io/api/v1/security/bluma-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.