API Documentation

BAPC Music Studio™'s versioned REST API for organization/workspace integrations. Create a key from a workspace's API Keys panel.

Authentication

Every request must include an Authorization: Bearer <api key> header. A key is bound to exactly one workspace -- it can only see and create resources within that workspace, never another workspace's or an individual's personal projects.

Scopes

  • PROJECTS_READ / PROJECTS_WRITE -- list/read/create projects
  • ASSETS_READ / ASSETS_WRITE -- list/read/upload assets
  • JOBS_READ -- read-only visibility into AI jobs (see note below)
  • EXPORTS_READ -- read-only visibility into completed master exports (see note below)
  • USAGE_READ -- workspace usage aggregates

Endpoints

GET /api/v1/projects

POST /api/v1/projects

GET /api/v1/projects/:id

GET /api/v1/projects/:id/assets

GET /api/v1/projects/:id/assets/:assetId

GET /api/v1/projects/:id/assets/:assetId/download

POST /api/v1/projects/:id/assets/upload-url

POST /api/v1/projects/:id/assets/finalize

GET /api/v1/projects/:id/jobs

GET /api/v1/projects/:id/jobs/:jobId

GET /api/v1/projects/:id/exports

GET /api/v1/projects/:id/exports/:versionId

GET /api/v1/usage

List endpoints accept ?limit= (max 100, default 25) and ?cursor= for pagination; responses include nextCursor.

Why Jobs and Exports are read-only

AI job execution (MIDI extraction) and mastering export both currently run as client-side browser work -- there is no server-side worker to execute either one on a bare API call. Rather than accept a request that would create a job stuck forever in PROCESSING, the API exposes these as read-only: an integration can observe status for jobs/exports a person created inside the app itself.

Errors

Errors return { error: { code, message, requestId } }. Common codes: UNAUTHENTICATED, SCOPE_REQUIRED, PROJECT_NOT_FOUND, ASSET_NOT_FOUND, JOB_NOT_FOUND, EXPORT_NOT_FOUND, INVALID_REQUEST, WORKSPACE_NOT_FOUND.