{"openapi":"3.1.0","info":{"title":"Limn public API","version":"1.0.0","description":"Authenticated HTTP API for contacts, tags, deals (`/opportunities`), conversations, invoices, forms, tasks, appointments, mail, events, AI, agency businesses, and embed widgets. Errors use `{ error: { code, message } }` today; RFC 9457 problem details are planned. Every POST accepts an optional `Idempotency-Key` header: a retry with the same key and the same request within 24 hours returns the first response instead of running again."},"servers":[{"url":"https://staging.launchwithlimn.com","description":"Production"}],"tags":[{"name":"contacts"},{"name":"tags"},{"name":"opportunities"},{"name":"conversations"},{"name":"invoices"},{"name":"forms"},{"name":"tasks"},{"name":"reports"},{"name":"appointments"},{"name":"calls"},{"name":"email"},{"name":"events"},{"name":"audit"},{"name":"ai"},{"name":"agency"},{"name":"embed"},{"name":"v1"}],"paths":{"/api/v1/contacts":{"get":{"summary":"List contacts","description":"List contacts Requires the `contacts.read` scope.","tags":["contacts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"post":{"summary":"Create a contact","description":"Create a contact Requires the `contacts.write` scope.","tags":["contacts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/contacts/search":{"get":{"summary":"Search contacts","description":"Search contacts Requires the `contacts.read` scope.","tags":["contacts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/contacts/{id}":{"get":{"summary":"Get a contact","description":"Get a contact Requires the `contacts.read` scope.","tags":["contacts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"patch":{"summary":"Update a contact","description":"Update a contact Requires the `contacts.write` scope.","tags":["contacts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"delete":{"summary":"Delete a contact","description":"Delete a contact Requires the `contacts.write` scope.","tags":["contacts"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/contacts/{id}/tags":{"post":{"summary":"Add tags to a contact","description":"Add tags to a contact Requires the `contacts.write` scope.","tags":["tags"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]},"delete":{"summary":"Remove tags from a contact","description":"Remove tags from a contact Requires the `contacts.write` scope.","tags":["tags"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/tags":{"get":{"summary":"List tags with their contact counts","description":"List tags with their contact counts Requires the `contacts.read` scope.","tags":["tags"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/pipelines":{"get":{"summary":"List pipelines and their stages","description":"List pipelines and their stages Requires the `opportunities.read` scope.","tags":["opportunities"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/opportunities":{"get":{"summary":"List deals","description":"List deals Requires the `opportunities.read` scope.","tags":["opportunities"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"post":{"summary":"Create a deal","description":"Create a deal Requires the `opportunities.write` scope.","tags":["opportunities"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/opportunities/{id}":{"get":{"summary":"Get a deal","description":"Get a deal Requires the `opportunities.read` scope.","tags":["opportunities"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"patch":{"summary":"Update, move or mark a deal","description":"Update, move or mark a deal Requires the `opportunities.write` scope.","tags":["opportunities"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/conversations":{"get":{"summary":"List team conversations","description":"List team conversations Requires the `conversations.read` scope.","tags":["conversations"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/conversations/{id}/messages":{"get":{"summary":"List a conversation's messages","description":"List a conversation's messages Requires the `conversations.read` scope.","tags":["conversations"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/invoices":{"get":{"summary":"List invoices","description":"List invoices Requires the `invoices.read` scope.","tags":["invoices"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/invoices/{id}":{"get":{"summary":"Get an invoice with its lines","description":"Get an invoice with its lines Requires the `invoices.read` scope.","tags":["invoices"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/forms":{"get":{"summary":"List forms and their fields","description":"List forms and their fields Requires the `forms.read` scope.","tags":["forms"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/forms/{id}/submissions":{"get":{"summary":"List a form's submissions","description":"List a form's submissions Requires the `forms.read` scope.","tags":["forms"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/tasks":{"get":{"summary":"List tasks","description":"List tasks Requires the `tasks.read` scope.","tags":["tasks"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"post":{"summary":"Create a task","description":"Create a task Requires the `tasks.write` scope.","tags":["tasks"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/tasks/{id}":{"get":{"summary":"Get a task","description":"Get a task Requires the `tasks.read` scope.","tags":["tasks"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"patch":{"summary":"Update, complete or reopen a task","description":"Update, complete or reopen a task Requires the `tasks.write` scope.","tags":["tasks"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/reports":{"get":{"summary":"Read report numbers over a period: leads, bookings, calls, reviews, posts and visitors, the same numbers the app's reports show","description":"Read report numbers over a period: leads, bookings, calls, reviews, posts and visitors, the same numbers the app's reports show Requires the `reports.read` scope.","tags":["reports"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/appointments":{"get":{"summary":"List appointments","description":"List appointments Requires the `calendar.read` scope.","tags":["appointments"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"post":{"summary":"Book an appointment","description":"Book an appointment Requires the `calendar.write` scope.","tags":["appointments"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"`slot_unavailable`: the time is not open on that calendar — outside its hours, inside a buffer or a blocked window, or already booked. Also: A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/appointments/slots":{"get":{"summary":"List open appointment slots","description":"List open appointment slots Requires the `calendar.read` scope.","tags":["appointments"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/appointments/{id}":{"get":{"summary":"Get an appointment","description":"Get an appointment Requires the `calendar.read` scope.","tags":["appointments"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"patch":{"summary":"Update an appointment","description":"Update an appointment Requires the `calendar.write` scope.","tags":["appointments"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"`slot_unavailable`: the time is not open on that calendar — outside its hours, inside a buffer or a blocked window, or already booked. A move can also answer `resource_busy` (a room or piece of equipment the calendar needs is taken), `appointment_withdrawn` (the appointment was canceled) or `already_resolved` (canceling one that is no longer active).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"delete":{"summary":"Cancel an appointment","description":"Cancel an appointment Requires the `calendar.write` scope.","tags":["appointments"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/calls":{"post":{"summary":"Create a video call room","description":"Create a video call room Requires the `calls.create` scope.","tags":["calls"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/email/send":{"post":{"summary":"Send an email","description":"Send an email Requires the `email.send` scope.","tags":["email"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/email/log":{"post":{"summary":"Log an outbound email without sending","description":"Log an outbound email without sending Requires the `email.send` scope.","tags":["email"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/events":{"post":{"summary":"Fire a workflow trigger event","description":"Fire a workflow trigger event Requires the `events` scope.","tags":["events"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/audit/run":{"get":{"summary":"Fetch a website audit report","description":"Fetch a website audit report Requires the `audit.run` scope.","tags":["audit"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"post":{"summary":"Start a website audit","description":"Start a website audit Requires the `audit.run` scope.","tags":["audit"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/ai/chat":{"post":{"summary":"Chat with a configured persona","description":"Chat with a configured persona Requires the `ai.chat` scope.","tags":["ai"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/ai/chat/stream":{"post":{"summary":"Stream a chat reply","description":"Stream a chat reply Requires the `ai.chat` scope.","tags":["ai"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/ai/speech":{"post":{"summary":"Synthesize speech from text","description":"Synthesize speech from text Requires the `ai.speech` scope.","tags":["ai"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/content":{"get":{"summary":"Read content hook performance and Studio capabilities","description":"Read content hook performance and Studio capabilities Requires the `ai.chat` scope.","tags":["ai"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"post":{"summary":"Run a Studio content action (script, assets, edit, batch, performance)","description":"Run a Studio content action (script, assets, edit, batch, performance) Requires the `ai.chat` scope.","tags":["ai"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/agency/locations":{"get":{"summary":"List businesses","description":"List businesses Requires the `agency.read` scope.","tags":["agency"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"post":{"summary":"Create a business","description":"Create a business Requires the `agency.write` scope.","tags":["agency"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/agency/locations/{id}":{"get":{"summary":"Get a business","description":"Get a business Requires the `agency.read` scope.","tags":["agency"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}},"patch":{"summary":"Update a business","description":"Update a business Requires the `agency.write` scope.","tags":["agency"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/agency/locations/lookup":{"get":{"summary":"Find a business by its external id","description":"Find a business by its external id Requires the `agency.read` scope.","tags":["agency"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/agency/locations/reselling":{"get":{"summary":"List businesses reselling is on for","description":"List businesses reselling is on for Requires the `agency.read` scope.","tags":["agency"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/agency/locations/{id}/usage":{"get":{"summary":"Read business usage for a billing period","description":"Read business usage for a billing period Requires the `agency.read` scope.","tags":["agency"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/agency/locations/{id}/wallet":{"get":{"summary":"Read a business's wallet balance","description":"Read a business's wallet balance Requires the `agency.read` scope.","tags":["agency"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/agency/locations/{id}/archive":{"post":{"summary":"Archive a business","description":"Archive a business Requires the `agency.write` scope.","tags":["agency"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/embed/config":{"get":{"summary":"Widget bootstrap config","description":"Widget bootstrap config","tags":["embed"],"security":[{"publishableKey":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}}}},"/api/v1/embed/lead":{"post":{"summary":"Capture a lead from an embed","description":"Capture a lead from an embed","tags":["embed"],"security":[{"publishableKey":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/embed/chat":{"post":{"summary":"Send an embed chat message","description":"Send an embed chat message","tags":["embed"],"security":[{"publishableKey":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}},"/api/v1/embed/audit":{"post":{"summary":"Run an embed website audit","description":"Run an embed website audit","tags":["embed"],"security":[{"publishableKey":[]}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"403":{"description":"Authenticated but not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"409":{"description":"A request with this Idempotency-Key is still running, or already ran and cannot be replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"422":{"description":"This Idempotency-Key was already used for a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1Error"}}}}},"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}]}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"limn_…","description":"Secret org API key. Header: `Authorization: Bearer limn_<hex>`. Grantable scopes: email.send, ai.chat, ai.speech, audit.run, contacts.read, calendar.read, calendar.write, calls.create, contacts.write, events, agency.read, agency.write, opportunities.read, opportunities.write, conversations.read, invoices.read, forms.read, tasks.read, tasks.write, reports.read, mcp.run. A key made before scopes existed holds an empty list, which grants exactly email.send, ai.chat, ai.speech, audit.run, contacts.read, calendar.read, calendar.write, calls.create, contacts.write, events; every other scope must be listed on the key."},"publishableKey":{"type":"apiKey","in":"header","name":"X-Limn-Key","description":"Publishable embed key (`limn_pub_…`), sent in the `X-Limn-Key` header. A `?key=` query parameter is still read when the header is absent but is deprecated: an address is recorded in access logs, a header is not."}},"parameters":{"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique value, 1 to 255 printable characters (a UUID is ideal). A retry with the same key and the same request within 24 hours returns the first successful response, marked `Idempotent-Replayed: true`, instead of running again. Reusing the key for a different request is refused with 422; a retry while the first is still running is refused with 409 and `Retry-After`. A failed request does not use up its key.","schema":{"type":"string","minLength":1,"maxLength":255}}},"schemas":{"V1Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine code for the failure."},"message":{"type":"string","description":"Human-readable explanation."}},"additionalProperties":false}},"additionalProperties":false}}}}