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 projectsASSETS_READ/ASSETS_WRITE-- list/read/upload assetsJOBS_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.


