Couplr Couplr developers
API v1 · API reference · explained by Flip

Leads

List and read the leads Couplr's assistant is talking to, and add a lead.

View Markdown

Base URL: https://couplrfsm.com/api/v1. Conventions shared by every endpoint (examples, ids, dates, money) are on the API reference page. Errors, pagination and idempotency are in Errors, limits and retries.

List leads#

GET /api/v1/leads · requires the leads:read ability

Query parameters

Name Type Required Description
page integer No Default: 1.
per_page integer No Values above 100 are served as 100. Default: 25.
updated_since string (date-time) No Only records changed at or after this time. ISO 8601, for example 2026-11-14T15:00:00Z.
channel string No Exact match, e.g. sms, web_chat, voice.
status string No
created_from string (date) No

Example request

curl "https://couplrfsm.com/api/v1/leads" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example response (200)

{
    "data": [
        {
            "id": "01a1db67-3ef9-73f3-bf60-4e522919bef6",
            "channel": "sms",
            "status": "active",
            "phone": "5552018890",
            "zip": "74105",
            "customer_id": 1842,
            "collected": {
                "issue": "No cooling upstairs"
            },
            "last_inbound_at": "2026-11-14T15:00:02+00:00",
            "last_outbound_at": "2026-11-14T15:00:09+00:00",
            "created_at": "2026-11-14T14:58:30+00:00",
            "updated_at": "2026-11-14T15:00:09+00:00"
        }
    ],
    "meta": {
        "page": 1,
        "per_page": 25,
        "total": 1,
        "last_page": 1
    }
}

Errors

Status When
401 No key (api_key_missing), the key is unknown or revoked (api_key_invalid), the key had an end date that has passed (api_key_expired), or the key belongs to a private trial sandbox whose access window has ended (sandbox_expired).
403 The key lacks the ability this endpoint needs (ability_missing), no admin user is left to act for the key (no_acting_admin), or the company's account is not yet verified.
422 A parameter or field is invalid (validation_failed). errors maps each field to its messages.
429 Too many requests (rate_limited). Wait Retry-After seconds.

Create a lead#

POST /api/v1/leads · requires the leads:write ability · accepts Idempotency-Key

Adds a lead. The person is matched to an existing customer by phone number, or added as a new customer, and the lead appears in Speed to Lead with a note for the office to follow up by phone.

By default nobody is texted. To have Couplr's assistant open a text conversation with the person, send both "start_conversation": true and "sms_consent": true. Send sms_consent only when the person has agreed to receive texts from this company. A conversation that ends with the assistant booking a visit counts as one booked lead on the account's plan, the same as a lead from the website form.

Even when asked, no text is sent if texting is not set up for the account, the person has replied STOP before, or the number is not a US or Canadian one. The lead is still created, and the response says why in conversation_not_started_reason.

Each call creates a lead. Send an Idempotency-Key so a retry does not create a second one.

Headers

Name Type Required Description
Idempotency-Key string No Makes a retry of this request safe. See "Retries and idempotency".

Request body (application/json)

Fields not listed are ignored.

Field Type Required Description
name string Yes
phone string Yes At least ten digits. Punctuation is ignored.
zip string or null No Used to check the lead is inside the company's service area.
start_conversation boolean No Have the assistant text this person to start a Speed to Lead conversation. Needs sms_consent. Default: false.
sms_consent boolean No True only when this person has agreed to receive texts from the company. Required when start_conversation is true. Default: false.

Example request

curl -X POST "https://couplrfsm.com/api/v1/leads" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: YOUR_UNIQUE_KEY" \
  -d '{"name":"Dana Whitfield","phone":"555-201-8890","zip":"74105"}'

Example response (201)

{
    "data": {
        "id": "01a1db67-3ef9-73f3-bf60-4e522919bef6",
        "channel": "sms",
        "status": "active",
        "phone": "5552018890",
        "zip": "74105",
        "customer_id": 1842,
        "collected": {
            "issue": "No cooling upstairs"
        },
        "last_inbound_at": "2026-11-14T15:00:02+00:00",
        "last_outbound_at": "2026-11-14T15:00:09+00:00",
        "created_at": "2026-11-14T14:58:30+00:00",
        "updated_at": "2026-11-14T15:00:09+00:00"
    }
}

Errors

Status When
401 No key (api_key_missing), the key is unknown or revoked (api_key_invalid), the key had an end date that has passed (api_key_expired), or the key belongs to a private trial sandbox whose access window has ended (sandbox_expired).
403 The key lacks the ability this endpoint needs (ability_missing), no admin user is left to act for the key (no_acting_admin), or the company's account is not yet verified.
422 A parameter or field is invalid (validation_failed). errors maps each field to its messages.
429 Too many requests (rate_limited). Wait Retry-After seconds.

Get a lead#

GET /api/v1/leads/{id} · requires the leads:read ability

Path parameters

Name Type Required Description
id string (uuid) Yes

Example request

curl "https://couplrfsm.com/api/v1/leads/9d3f6a52-0c1e-4c57-9d0a-3a0f8a4a7b21" \
  -H "Authorization: Bearer YOUR_API_KEY"

Example response (200)

{
    "data": {
        "id": "01a1db67-3ef9-73f3-bf60-4e522919bef6",
        "channel": "sms",
        "status": "active",
        "phone": "5552018890",
        "zip": "74105",
        "customer_id": 1842,
        "collected": {
            "issue": "No cooling upstairs"
        },
        "last_inbound_at": "2026-11-14T15:00:02+00:00",
        "last_outbound_at": "2026-11-14T15:00:09+00:00",
        "created_at": "2026-11-14T14:58:30+00:00",
        "updated_at": "2026-11-14T15:00:09+00:00"
    }
}

Errors

Status When
401 No key (api_key_missing), the key is unknown or revoked (api_key_invalid), the key had an end date that has passed (api_key_expired), or the key belongs to a private trial sandbox whose access window has ended (sandbox_expired).
403 The key lacks the ability this endpoint needs (ability_missing), no admin user is left to act for the key (no_acting_admin), or the company's account is not yet verified.
404 No such record in this company (not_found).
429 Too many requests (rate_limited). Wait Retry-After seconds.

Lead object#

Field Type Description
id string (uuid)
channel string or null
status string or null
phone string or null
zip string or null
customer_id integer or null
collected object or null Whatever the assistant captured. Keys vary by lead.
last_inbound_at string (date-time) or null
last_outbound_at string (date-time) or null
created_at string (date-time) or null
updated_at string (date-time) or null

Copy this page as Markdown

Your browser blocked automatic copying. The complete page is selected below. Press Ctrl+C (Cmd+C on a Mac) to copy it.