BayLineup Public API

A REST API over your shop's own data. Create and manage keys on API Keys.

Authentication

Send your key as a bearer token on every request. Keys are org-scoped, individually revocable, and each carries its own set of granted scopes.

curl https://YOUR-SHOP.baylineup.com/api/v1/me \
  -H "Authorization: Bearer bl_live_xxxxxxxxxxxxxxxx"

Base URL

https://YOUR-SHOP.baylineup.com/api/v1

Scopes

Every endpoint below except /me requires a specific scope. A key without the required scope gets a 403 forbidden. Grant only the scopes an integration actually needs when creating a key.

Rate limits

Endpoints are grouped into three classes with independent per-minute sustained-rate limits per key:

  • Class A · 120 req/min · lightweight single-record reads
  • Class B · 60 req/min · collection/search reads
  • Class C · 30 req/min · mutations

Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. A key may also carry an optional daily quota (X-DailyQuota-* headers when set) and a concurrency limit. Exceeding any of these returns 429 with a Retry-After header. Check current usage on your key's API Keys dashboard, or call GET /api/v1/me (which never itself counts against your daily quota).

Idempotency

Mutation endpoints marked idempotent below accept an Idempotency-Key header. Retrying the same key with the same body returns the original result rather than creating a duplicate; retrying with a different body returns 409 conflict.

Correlation IDs

Every response includes an X-Correlation-Id header (also echoed in error bodies). Include it when reporting an issue.

Errors

Errors always come back as a consistent JSON envelope:

{
  "error": {
    "code": "forbidden",
    "message": "This API key does not have the \"jobs:read\" scope.",
    "correlationId": "..."
  }
}
CodeHTTP statusMeaning
unauthorized401Missing or invalid Authorization: Bearer <api key> header.
forbidden403The key is valid but lacks the scope this endpoint requires.
not_found404The requested resource does not exist.
validation_error400Request body/query failed validation; see fieldErrors.
rate_limit429Per-minute rate limit exceeded for this key's endpoint class. Retry-After header set.
daily_quota429This key's configured daily quota is exhausted. Retry-After header set.
concurrency_limit429Too many in-flight requests for this key at once.
conflict409The request conflicts with existing state (e.g. duplicate Idempotency-Key with a different body).
service_unavailable503The public API is temporarily disabled (kill switch) or the database is unavailable.
internal_error500Unexpected server-side failure. Include the correlationId when reporting it.

Endpoints

MethodPathScopeClassSummary
GET/api/v1/menoneAIdentity of the calling API key: name, key prefix, granted scopes, and rate-limit/quota policy. Does not itself consume daily quota.
GET/api/v1/locationslocations:readBShop locations.
GET/api/v1/customerscustomers:readBCustomers. Query: search
GET/api/v1/vehiclesvehicles:readBVehicles. Query: customerId
GET/api/v1/jobsjobs:readBJobs/work orders. Query: status
GET/api/v1/employeesemployees:readBEmployees.
GET/api/v1/job-typesjob_types:readAJob type catalog, needed to build a valid appointment line item.
GET/api/v1/appointmentsappointments:readBAppointments/queue. Query: status
POST/api/v1/appointmentsappointments:writeCCreate an appointment, or a walk-in when requestedAt is omitted (created directly checked_in). · idempotent
GET/api/v1/inspection-findingsfindings:readBDVI inspection findings. Query: status, vehicleId
GET/api/v1/partsparts:readBParts catalog. Query: search, category
GET/api/v1/analytics/messaging-healthanalytics:readBAggregate messaging health: counts by status, total segments/estimated cost. Query: sinceHours (max 720)
GET/api/v1/partner-opportunitiespartner_intake:readBPartner referral/opportunity intake records.
POST/api/v1/partner-opportunitiespartner_intake:writeCSubmit a partner referral/opportunity. · idempotent
GET/api/v1/reviewsreviews:readBCustomer reviews.
POST/api/v1/reviews/{id}/respondreviews:respondCPost a shop response to a review.
GET/api/v1/review-scriptsreview_scripts:readBReview-request message scripts.
POST/api/v1/review-scriptsreview_scripts:writeCCreate/update a review-request message script.
GET/api/v1/reputationreputation:readAAggregate review/reputation score.

This surface expands over time as new scopes and endpoint families ship. If your integration needs data or a scope that isn't listed here yet, contact support.