REST API

A small public REST API for leads, pipelines and client accounts.

Myra has a public REST API for reading and writing leads, and for reading your pipelines and client accounts. It uses JSON for all request and response bodies and standard HTTP status codes.

It is deliberately small. Only the endpoints listed below exist - anything else returns 404.

Authentication

Tokens are managed in Business → API, and only business owners and admins can see or create them. A token is shown once, at creation; store it somewhere safe.

Send it as a bearer token:

Authorization: Bearer pak_xxxxxxxxxxxxxxxxxxxx

Scopes

There are exactly two scopes:

Scope Allows
read All GET requests
write POST, PATCH and DELETE requests

A token can hold one or both. You can also set an optional expiry, revoke a token, or delete it.

Tokens are scoped to your business: every request is limited to the client accounts that belong to it. Passing a client_id from another business returns 403.

Base URL

https://myra-app.ai/api/public/v1

The same base URL is shown in-product on the Business → API page.

Endpoints

Method Path Scope Description
GET /leads read List leads across your client accounts
POST /leads write Create a lead
GET /leads/{id} read Fetch a single lead
PATCH /leads/{id} write Update a lead
DELETE /leads/{id} write Delete a lead
GET /pipelines read List pipelines with their stages
GET /clients read List the client accounts in your business

List leads

curl "https://myra-app.ai/api/public/v1/leads?limit=50&offset=0" \
  -H "Authorization: Bearer pak_xxx"

Optional query parameters: client_id, stage_id, limit, offset.

{
  "data": [
    {
      "id": "…",
      "client_id": "…",
      "name": "Jane Doe",
      "email": "jane@example.com",
      "phone": "+15551234567",
      "source": "website",
      "value": 1200,
      "pipeline_id": "…",
      "stage_id": "…",
      "created_at": "2026-08-26T10:00:00Z"
    }
  ],
  "total": 134,
  "limit": 50,
  "offset": 0
}

Create a lead

client_id and name are required. email, phone, source, notes, value, pipeline_id, stage_id and business_name are optional.

curl -X POST https://myra-app.ai/api/public/v1/leads \
  -H "Authorization: Bearer pak_xxx" \
  -H "Content-Type: application/json" \
  -d '{"client_id":"…","name":"Jane Doe","email":"jane@example.com"}'

Pagination

Offset-based. Use limit (default 50, maximum 200) and offset. List responses include total, limit and offset. There are no cursors.

Rate limits

  • Reads: 600 requests per minute per token
  • Writes: 60 requests per minute per token

Exceeding a limit returns 429 with a retry-after header. No X-RateLimit-* headers are sent.

Errors

Errors are a flat JSON object with a single error string:

{ "error": "client_id not in this agency" }
Status Meaning
400 Invalid JSON or failed validation
401 Missing, malformed, revoked or expired token
403 Token lacks the required scope, or wrong client
404 Record not found (or not visible to your business)
429 Rate limited
500 Server error

What the API does not cover

There are no contacts, deals, conversations, messages, calendar or automation endpoints. To reach anything else, use an Automation with a Webhook step, or an automation trigger webhook - see Webhooks.