Required headers and scopes

Required request headers, OAuth scopes, and authorization error responses for the Vibe API.

Every request to api.vibe.co carries the same three headers and is gated by an OAuth scope. This page is the single source of truth for both — endpoint pages link here rather than repeating the boilerplate.

Required headers

HeaderValueWhen
AuthorizationBearer {access_token}Every request
X-Vibe-RevisionAn ISO 8601 year-month, e.g. 2026-05Every request
Content-Typeapplication/jsonRequests with a body

access_token is obtained via the OAuth token endpoint. For the full OAuth walkthrough, see Start your OAuth flow.

X-Vibe-Revision pins the request to a specific API revision. Hard-code your pinned value in production — see API Versioning and the Changelog for the list of published revisions.

Required scopes

Each endpoint requires one scope from the table below. Request the minimum your integration needs when you register your OAuth client.

Error responses

A request with no token or an expired token returns 401 Unauthorized. A request with a valid token that lacks the required scope returns 403 Forbidden.

Errors follow the standard Vibe error envelope:

{
  "error": {
    "type": "insufficient_scope",
    "title": "The token does not have the required scope.",
    "status": 403,
    "detail": {
      "required_scope": "campaigns:write",
      "granted_scopes": ["campaigns:read"]
    }
  }
}

[verify the actual envelope shape against a real 403 response before publishing]

Adding a scope after registration

Edit your app in My Applications → Authentication, request the additional scope, and resubmit for review. Issued tokens with the old scope set continue to work until expiry; tokens issued after approval carry the new scope.