Base URL: https://couplrfsm.com/api/v1. API version: v1.
These pages are generated from the OpenAPI specification, which is tested against the running API. Authentication is described in Authentication and API keys. Error format, pagination, rate limits and idempotency are described in Errors, limits and retries.
Resources#
- Customers: List, find, create and update customers, and add service addresses to them.
- Jobs: List, create and update jobs.
- Lookup lists: Short lists of the job types, technicians, tags, lead sources and market segments a job refers to by id.
- Invoices: List and read invoices with their line items, and create draft invoices.
- Payments: Read the payments collected on invoices and what has been refunded.
- Price book: List, read, create and update the items a company puts on invoices and estimates.
- Estimates: List and read estimates, create one with the simple layout, and email it to the customer.
- Schedules and time: Read time entries (who worked when) and the schedule blocks that are not jobs.
- Notes: Read the notes on a customer or a job, and add a note.
- Photos and documents: Time-limited links to the photos on a job or a customer, and to a customer's documents.
- Equipment: Read the equipment installed at a customer's addresses.
- Booking: Find open time slots and book a visit into one.
- Maintenance plans: Read the maintenance plans a company sells and which customers are enrolled in them, and enroll a customer.
- Leads: List and read the leads Couplr's assistant is talking to, and add a lead.
- Webhook subscriptions: Add, change and remove the destinations Couplr sends events to.
- Deleted records: Learn which customers, jobs, invoices and estimates were removed, to keep a copy in step.
- Account: Identify the API key in use.
Conventions#
Used by every endpoint:
- Send and receive JSON. Records come back inside
data. - In examples, replace
YOUR_API_KEYwith your key andYOUR_UNIQUE_KEYwith a unique string per operation. Ids such as1842are examples. - Request fields that are not listed are ignored. A field you omit keeps its value on update, or takes its default on create.
- Timestamps are ISO 8601 in UTC unless a field says otherwise. Dates are
YYYY-MM-DD. - Customer, job, estimate and lead ids are integers. Invoice ids are UUID strings.
- Money is in US dollars. Invoice
amountand linerateare decimal strings such as"389.00". Estimatetotalis a number.
All endpoints#
| Endpoint | What it does | Ability |
|---|---|---|
GET /api/v1/customers |
List customers | customers:read |
POST /api/v1/customers |
Create a customer | customers:write |
GET /api/v1/customers/{id} |
Get a customer | customers:read |
PATCH /api/v1/customers/{id} |
Update a customer | customers:write |
POST /api/v1/customers/{id}/addresses |
Add an address to a customer | customers:write |
GET /api/v1/jobs |
List jobs | jobs:read |
POST /api/v1/jobs |
Create a job | jobs:write |
GET /api/v1/jobs/{id} |
Get a job | jobs:read |
PATCH /api/v1/jobs/{id} |
Update a job | jobs:write |
POST /api/v1/jobs/{id}/complete |
Complete a job | jobs:complete |
GET /api/v1/job-types |
List job types | jobs:read |
GET /api/v1/technicians |
List technicians | jobs:read |
GET /api/v1/tags |
List tags | jobs:read |
GET /api/v1/lead-sources |
List lead sources | jobs:read |
GET /api/v1/market-segments |
List market segments | jobs:read |
GET /api/v1/invoices |
List invoices | invoices:read |
POST /api/v1/invoices |
Create a draft invoice | invoices:write |
GET /api/v1/invoices/{id} |
Get an invoice | invoices:read |
POST /api/v1/invoices/{id}/send |
Send a draft invoice | invoices:send |
GET /api/v1/invoices/{id}/payments |
List an invoice's payments | payments:read |
GET /api/v1/payments |
List payments | payments:read |
GET /api/v1/price-book-items |
List price book items | price-book:read |
POST /api/v1/price-book-items |
Create a price book item | price-book:write |
GET /api/v1/price-book-items/{id} |
Get a price book item | price-book:read |
PATCH /api/v1/price-book-items/{id} |
Update a price book item | price-book:write |
GET /api/v1/estimates |
List estimates | estimates:read |
POST /api/v1/estimates |
Create an estimate | estimates:write |
GET /api/v1/estimates/{id} |
Get an estimate | estimates:read |
POST /api/v1/estimates/{id}/send |
Send an estimate | estimates:write |
GET /api/v1/time-entries |
List time entries | timesheets:read |
GET /api/v1/schedule-events |
List schedule events | timesheets:read |
GET /api/v1/customers/{id}/notes |
List a customer's notes | notes:read |
POST /api/v1/customers/{id}/notes |
Add a note to a customer | notes:write |
GET /api/v1/jobs/{id}/notes |
List a job's notes | notes:read |
POST /api/v1/jobs/{id}/notes |
Add a note to a job | notes:write |
GET /api/v1/jobs/{id}/photos |
List a job's photos | photos:read |
GET /api/v1/customers/{id}/photos |
List a customer's photos | photos:read |
GET /api/v1/customers/{id}/documents |
List a customer's documents | photos:read |
GET /api/v1/equipment |
List equipment | equipment:read |
GET /api/v1/equipment/{id} |
Get a piece of equipment | equipment:read |
GET /api/v1/availability |
List open time slots | availability:read |
POST /api/v1/bookings |
Book a visit | bookings:write |
GET /api/v1/maintenance-plans |
List maintenance plans | plans:read |
GET /api/v1/maintenance-plans/{id} |
Get a maintenance plan | plans:read |
GET /api/v1/maintenance-plan-enrollments |
List plan enrollments | plans:read |
POST /api/v1/maintenance-plan-enrollments |
Enroll a customer in a plan | plans:write |
GET /api/v1/maintenance-plan-enrollments/{id} |
Get a plan enrollment | plans:read |
GET /api/v1/leads |
List leads | leads:read |
POST /api/v1/leads |
Create a lead | leads:write |
GET /api/v1/leads/{id} |
Get a lead | leads:read |
GET /api/v1/webhook-subscriptions |
List webhook subscriptions | webhooks:manage |
POST /api/v1/webhook-subscriptions |
Create a webhook subscription | webhooks:manage |
PATCH /api/v1/webhook-subscriptions/{id} |
Update a webhook subscription | webhooks:manage |
DELETE /api/v1/webhook-subscriptions/{id} |
Delete a webhook subscription | webhooks:manage |
GET /api/v1/deleted |
List deleted records | Any valid key |
GET /api/v1/me |
Identify the API key | Any valid key |
Shared objects#
Returned by every resource. Each resource's own object is described on its page.
Page metadata object#
| Field | Type | Description |
|---|---|---|
page |
integer | |
per_page |
integer | |
total |
integer | |
last_page |
integer |
Error object#
RFC 9457 problem details, plus code, request_id, and the older message / errors members.
| Field | Type | Description |
|---|---|---|
type |
string | Always about:blank; branch on code. |
title |
string | |
status |
integer | |
detail |
string | |
code |
string | Stable, machine-readable. New codes may be added. |
request_id |
string (uuid) | |
message |
string | Same text as detail. |
errors |
object | On 422 only. Field name to list of messages. |