# Flyra > Flyra is the software home service businesses run on: leads and the inbox, the schedule, estimates, invoices and payments, subscriptions for recurring work, automations, team reports and a door to door map, on the web and in the iPhone app (Android is planned for November 1, 2026). Most customers clean windows, pressure wash, clean gutters or hang holiday and permanent lighting, and many sell door to door. ## What Flyra does - [Leads and inbox](https://flyra.io/features/leads-and-inbox): Build a lead form in minutes and leads land in your Flyra pipeline the moment someone submits. Automations follow them up, every text and call sits in one inbox, and answering a call opens the customer’s card. - [Schedule and jobs](https://flyra.io/features/jobs-and-scheduling): Flyra’s schedule reads at a glance: jobs in the colour of their rep, a live preview of the day before you book, subscription visits on the day you choose, and quality check shots that must be in before a job closes. - [Estimates and payments](https://flyra.io/features/estimates-and-payments): Flyra sends tiered estimates your customer picks from, draws lighting mockups on their own house, and takes payment by card, bank, Tap to Pay or a code they scan, with automatic payment reminders. - [Door to door map](https://flyra.io/features/door-to-door-map): Flyra’s door to door map turns every knock into a pin: Sale, Not Home, Not Interested, Revisit, Quote and more. Hand each rep a territory, see your team on the map live, and give every rep their own sales data. - [Automations](https://flyra.io/features/automations): Flyra’s automation builder has 49 triggers, from a new lead or a booked appointment to a finished job or an unpaid invoice, and it texts, emails, asks for the review, moves the lead and sends webhooks for you. Build them yourself or with Claude. - [Team and reports](https://flyra.io/features/team-and-reports): Flyra wires timesheets into payroll, pays sales and technicians on different schedules, sends team contracts to sign, and reports payments, leads, tips and the leaderboard on the date range you pick. Export any report to CSV. - [Subscriptions](https://flyra.io/features/subscriptions): Flyra subscriptions for recurring work: pick a subscription template and Flyra fills in the service, the agreement and the billing. Your customer signs and pays on one page, a deposit is collected at signature, and every renewal hits the same card. - [Mobile app](https://flyra.io/features/mobile-app): The Flyra iPhone app: the map with every door and territory, in person estimates signed on your phone, Tap to Pay, Enter Card or Show QR on the job, and revenue and the leaderboard on Home. Android is planned for November 1, 2026. - [Connections and AI](https://flyra.io/features/connections-and-ai): Run Flyra from Claude or ChatGPT: book jobs, send estimates and check who owes you, just by asking, with 390 actions available. Plus website and Meta lead forms, the Meta Conversions API, Google Calendar, webhooks and a REST API. - [Meta lead ads](https://flyra.io/features/meta): Connect your Facebook and Instagram pages to Flyra: every lead ad lands in your pipeline with its form answers, each instant form goes to the pipeline you choose, and the Meta Conversions API reports stage changes back to Meta so your ads optimise against the leads that became customers. - [QuickBooks](https://flyra.io/features/quickbooks): Connect QuickBooks Online to Flyra and your customers and every collected payment flow into QuickBooks automatically, every few minutes: invoiced payments as a payment on the invoice, the rest as a sales receipt, with sales tax on its own line. - [Flyra for Claude](https://flyra.io/features/claude): How to connect Flyra to Claude: add a custom connector with the URL https://mcp.flyra.io/mcp, sign in with Flyra, then book jobs, send estimates and check who owes you just by asking. Works on Free, Pro, Max, Team and Enterprise. 390 actions, no API key. - [Flyra for ChatGPT](https://flyra.io/features/chatgpt): How to connect Flyra to ChatGPT: turn on Developer mode, add Flyra under Plugins with the URL https://mcp.flyra.io/mcp and OAuth, then book jobs, send estimates and check who owes you just by asking. Works on Plus, Pro, Business, Enterprise and Edu. - [Pricing](https://flyra.io/pricing): Plans and what each includes. - [What's new](https://flyra.io/changelog): Every weekly product update, newest first. The most reliable view of what Flyra can do today. - [Reviews](https://flyra.io/reviews): What Flyra customers say. - [Compare](https://flyra.io/compare): Flyra next to other field service and door to door tools. ## For developers and AI agents Flyra exposes a public REST API at version `2026-06-01`. Authentication is a Bearer token (`flr_live_…`) generated by org admins in Developer (in the Flyra sidebar). Every endpoint is scoped per-key with Resource × Read/Write permissions; calls are audit-logged. The REST API can do everything the MCP server can. Every MCP tool is also `POST /v2026-06-01/actions/{tool_name}` with the tool's inputs as the JSON body, answered `{"data": …}`; `GET /v2026-06-01/actions` lists them all with scopes and input JSON Schemas, and the OpenAPI spec documents each one. Texting, email and call history also have named routes (below). ## Docs - [API Overview](https://developers.flyra.io): Human-readable interactive reference (Scalar). Try-it pane for live calls. - [OpenAPI 3.1 Spec](https://developers.flyra.io/openapi.json): Machine-readable contract. Use this for codegen, agent tool discovery, or Postman/Insomnia import. - [API Catalog (RFC 9727)](https://developers.flyra.io/.well-known/api-catalog): Standards-based discovery linkset pointing at the OpenAPI spec. ## MCP server Flyra runs a Model Context Protocol server, which is usually the right surface for an AI assistant acting on a Flyra account: it needs no codegen and no OpenAPI parsing. A server that would rather speak plain HTTP gets the same tools from the REST API under `/v2026-06-01/actions/{tool_name}`. - [Flyra MCP server](https://mcp.flyra.io): What it is, the endpoint, client configuration for Claude / ChatGPT / Cursor, and the full tool list by area. - [MCP setup docs](https://developers.flyra.io/mcp): Install and troubleshooting. - [Connect Flyra to Claude](https://flyra.io/features/claude): Step-by-step setup in Claude (no API key), requests to try, and everything it can and can't do. - [Connect Flyra to ChatGPT](https://flyra.io/features/chatgpt): Step-by-step setup in ChatGPT with Developer mode and OAuth, requests to try, and everything it can and can't do. - Endpoint: `https://mcp.flyra.io/mcp` over Streamable HTTP, MCP spec `2025-11-25`. Same `Authorization: Bearer flr_live_…` key as the REST API. - More than 170 tools across customers and leads, catalogue and pricing, invoicing and payments and payroll, jobs and scheduling, door-knocking map pins and rep territories, messaging and email and voice, tasks and automations, and multi-company access. Also implements the `search` and `fetch` pair ChatGPT deep research expects. - Door knocking is the unusual part: pins with dispositions, configurable pin types and rep territories are exposed as tools. Most field service products have no such feature at all. ## Common operations - [List jobs](https://developers.flyra.io/#operation/listJobs): `GET /v2026-06-01/jobs` with status, customer_id, since filters. Scope: `jobs:read`. - [Create a job](https://developers.flyra.io/#operation/createJob): `POST /v2026-06-01/jobs`. Upserts customer by email/phone, then schedules. Scope: `jobs:write`. - [List customers](https://developers.flyra.io/#operation/listCustomers): `GET /v2026-06-01/customers` with search, email, phone filters. Scope: `customers:read`. - [Create a customer](https://developers.flyra.io/#operation/createCustomer): `POST /v2026-06-01/customers`. Deduped on email + phone within the org. Scope: `customers:write`. - [List leads](https://developers.flyra.io/#operation/listLeads): `GET /v2026-06-01/leads` with search, stage, status, pipeline_id, since filters. Scope: `leads:read`. - [Create a lead](https://developers.flyra.io/#operation/createLead): `POST /v2026-06-01/leads`. Captures into the pipeline and fires the org's new-lead automation; idempotent via external_lead_id. Scope: `leads:write`. - [List the price book](https://developers.flyra.io/#operation/listServices): `GET /v2026-06-01/services`. Categories with line items. Scope: `services:read`. - [Add a service](https://developers.flyra.io/#operation/createService): `POST /v2026-06-01/services`. Adds a line item under an existing category. Scope: `services:write`. - [List estimates](https://developers.flyra.io/#operation/listEstimates): `GET /v2026-06-01/estimates` with status, customer_id, since filters. Scope: `estimates:read`. - [Create an estimate](https://developers.flyra.io/#operation/createEstimate): `POST /v2026-06-01/estimates`. Draft quote from line items; totals computed server-side. Scope: `estimates:write`. - [Text an estimate to its customer](https://developers.flyra.io/#operation/sendEstimate): `POST /v2026-06-01/estimates/{id}/send`. Scopes: `estimates:write` + `sms:send`. - [Create a subscription](https://developers.flyra.io/#operation/createSubscription): `POST /v2026-06-01/subscriptions` from a subscription template. Scope: `subscriptions:write`. - [Record an invoice payment](https://developers.flyra.io/#operation/recordInvoicePayment): `POST /v2026-06-01/invoices/{id}/record-payment` for a payment taken outside Flyra; idempotent via idempotency_key. Scope: `invoices:write`. - [List payments](https://developers.flyra.io/#operation/listPayments): `GET /v2026-06-01/payments?from=...` lists a window's payments like Reports > Payments, with method, who recorded each one and when. Scope: `invoices:read`. - [Send a text](https://developers.flyra.io/#operation/sendMessage): `POST /v2026-06-01/messages` with customer_id or to_phone (E.164), body, optional media_urls. Goes out from the org's own number. Scope: `sms:send`. - [List text conversations](https://developers.flyra.io/#operation/listConversations): `GET /v2026-06-01/conversations`, newest first, with updated_since for polling. Scope: `sms:read`. - [Read a conversation](https://developers.flyra.io/#operation/listConversationMessages): `GET /v2026-06-01/conversations/{id}/messages`. Scope: `sms:read`. - [Reply in a conversation](https://developers.flyra.io/#operation/replyToConversation): `POST /v2026-06-01/conversations/{id}/messages`. Scope: `sms:send`. - [Send an email](https://developers.flyra.io/#operation/sendEmail): `POST /v2026-06-01/emails`. Scope: `email:send`. - [List and read email threads](https://developers.flyra.io/#operation/listEmailThreads): `GET /v2026-06-01/email-threads`, `GET /v2026-06-01/email-threads/{id}`. Scope: `email:read`. - [List calls](https://developers.flyra.io/#operation/listCalls): `GET /v2026-06-01/calls` (missed, answered, transcripts), `GET /v2026-06-01/calls/{id}`. Read-only: the API does not place calls. Scope: `calls:read`. - [Run any action](https://developers.flyra.io/#operation/listActions): `POST /v2026-06-01/actions/{tool_name}`. The scope is the tool's own, listed by `GET /v2026-06-01/actions`. ## Authentication `Authorization: Bearer flr_live_<32-char-base64url>` Keys are minted at https://app.flyra.io/developer by admin members of a Flyra org. Each key can be scoped to specific resources × verbs; legacy keys (issued before 2026-05) grant full access. Expired or revoked keys return `401 {"error": "API key expired"}` or `{"error": "Invalid or revoked API key"}`. ## Scopes | Scope | Routes | |---|---| | `jobs:read` | GET /v2026-06-01/jobs, GET /v2026-06-01/jobs/{id} | | `jobs:write` | POST /v2026-06-01/jobs, PATCH /v2026-06-01/jobs/{id}, DELETE /v2026-06-01/jobs/{id} | | `customers:read` | GET /v2026-06-01/customers, GET /v2026-06-01/customers/{id} | | `customers:write` | POST /v2026-06-01/customers, PATCH /v2026-06-01/customers/{id} | | `leads:read` | GET /v2026-06-01/leads, GET /v2026-06-01/leads/{id} | | `leads:write` | POST /v2026-06-01/leads, PATCH /v2026-06-01/leads/{id} | | `estimates:read` | GET /v2026-06-01/estimates | | `estimates:write` | POST /v2026-06-01/estimates | | `employees:read` | GET /v2026-06-01/employees | | `services:read` | GET /v2026-06-01/services | | `services:write` | POST /v2026-06-01/services | | `subscriptions:read` | GET /v2026-06-01/subscriptions, GET /v2026-06-01/subscriptions/{id} | | `subscriptions:write` | POST /v2026-06-01/subscriptions | | `invoices:read` | GET /v2026-06-01/payments | | `invoices:write` | POST /v2026-06-01/invoices/{id}/record-payment | | `sms:send` | POST /v2026-06-01/messages, POST /v2026-06-01/conversations/{id}/messages, POST /v2026-06-01/estimates/{id}/send | | `sms:read` | GET /v2026-06-01/conversations, GET /v2026-06-01/conversations/{id}/messages, GET /v2026-06-01/sms-credits | | `email:send` | POST /v2026-06-01/emails | | `email:read` | GET /v2026-06-01/email-threads, GET /v2026-06-01/email-threads/{id} | | `calls:read` | GET /v2026-06-01/calls, GET /v2026-06-01/calls/{id} | | each tool's own | POST /v2026-06-01/actions/{tool_name} (see GET /v2026-06-01/actions) | Missing-scope responses use status `403` and shape `{"error": "...", "code": "scope_denied", "required_scope": "jobs:write"}` so an agent can prompt the user to expand the key's permissions and retry. ## Versioning The current version is `2026-06-01`. Date-versioned URLs (`/v2026-06-01/*`). The unversioned `/api/public/*` paths still work and emit advisory `Deprecation: true` and `Sunset: 2026-12-01` response headers — prefer the versioned paths for new integrations. ## Error shape All error responses are JSON: `{"error": string, "code"?: string, "hint"?: string, "errors"?: [{field, message}], "required_scope"?: string}`. Common codes: `validation_error`, `scope_denied`, `duplicate_customer`, `not_found`, `rate_limited` (429, with Retry-After), `opted_out`. ## Rate limits Per-key bucket: 200 requests / 15 min for reads, 100 / 15 min for writes. `429` responses carry `Retry-After`, `X-RateLimit-*` headers. ## Optional - [Status](https://status.flyra.io): Uptime + incident history (coming soon). - [Contact](mailto:info@flyra.io): For API-specific questions, integration partnerships, or to request additional scopes.