Skip to main content

Authentication

Every /v1 request needs a company-scoped API key as a Bearer token:

Authorization: Bearer mds_live_...

Keys are created and revoked by company admins under Settings → API Keys in the planner. An invalid or revoked key returns 401.

Scopes

Each key carries a set of scopes. A request without the required scope returns 403 insufficient_scope. Reads need the read:* scope, writes the write:* scope for the resource.

ResourceRead scopeWrite scope
Projectsread:projectswrite:projects
Offers & offer requestsread:offerswrite:offers
Customersread:customerswrite:customers
Materials & material seriesread:materialswrite:materials
Manufacturersread:manufacturerswrite:manufacturers
Servicesread:serviceswrite:services
Companyread:companywrite:company
Analyticsread:analytics
Document generationread:documents

Data is always scoped to the key's company — you can only ever see or change your own company's records.

Rate limits

There are no enforced rate limits today. Every request is logged per key (visible under Settings → API Keys), and limits may be introduced later — build clients to tolerate 429 responses, keep request volume reasonable, and prefer webhooks over polling.

Errors

StatuserrorMeaning
400validation_error / invalid_sortBad body, params, or sort field
401invalid_api_key / missing_api_keyNo/!valid key
403insufficient_scopeKey lacks the required scope
404not_foundNo such record in your company