Stop exporting CSVs. Route leads to tradespeople the moment they land.
See how the API works →The average tradesperson responds to a lead within 4–6 hours. The homeowner already called three competitors. Your platform takes the blame for poor conversion — even though your leads were qualified. The gap isn't lead quality, it's speed-to-contact. Manual CSV exports, email notifications nobody opens, and portal logins tradespeople forget about are killing your product's reputation.
selected_trade on the call to route by category — plumbing, gas, electrical, roofing, building or all — in the same request that registers the lead.A message, sent and delivered live on the platform. TPS-screened before every send. ICO registered: ZC164080.
One endpoint registers a lead. The body is small on purpose: a mobile number and a postcode are the only required fields, because who to reach and where the job is are what decide whether a lead can be actioned. Everything else is optional attribution.
curl -X POST https://app.pipeiq.co.uk/api/leads/register \ -H "Content-Type: application/json" \ -H "X-PipeIQ-Token: YOUR_API_KEY" \ -d '{ "mobile_number": "07700900000", "postcode": "SW1A 1AA", "selected_trade": "plumbing", "utm_source": "meta", "utm_campaign": "boiler-q4" }'
A 201 Created response means the lead was registered and the welcome SMS was
dispatched; the body returns the matched postcode sector. mobile_number accepts
07xxxxxxxxx or 447xxxxxxxxx. selected_trade takes plumbing,
gas, electrical, roofing, building or
all; it is not validated, so an unrecognised or omitted value is recorded as
Other rather than rejected. Full field and response reference on the
Partner API page.
Every call goes to the same base URL, https://app.pipeiq.co.uk, with the same
X-PipeIQ-Token header. No SDK, no OAuth dance: if your platform can make an HTTPS POST,
it can route leads.
| Method | Path | What it does |
|---|---|---|
POST | /api/leads/register | Register a homeowner lead and dispatch the welcome SMS. Returns the postcode sector. |
POST | /api/v1/send | TPS-screen and send a single SMS. Returns message id, screening result, status, credits. |
POST | /api/v1/send-bulk | Up to 500 numbers in one call, with per-number message objects. |
GET | /api/v1/status | Poll delivery status by message id. |
GET | /api/v1/credits | Check credit balance, plan and trial expiry. |
POST | /api/v1/webhook-test | Fire a test payload at your own endpoint to verify your handler. |
POST | /api/auth/sandbox-key | Issue a sandbox key — 10 calls, 48-hour expiry, no card. |
The sandbox is the part integrators underuse: no real SMS is sent and no real credits are consumed, so you can build and demo the whole flow before anything is billable. Details on the developer API page.
The payload is validated. A missing or malformed mobile number or postcode comes straight back as 400 Bad Request, before anything is queued — so you find out at integration time, not from a complaint a week later.
The number is screened. Checked against the TPS and CTPS registers and the platform's own opt-out list. A number that previously unsubscribed returns 422 and is not messaged.
The SMS goes out. Sent from a dedicated UK mobile number rather than a shortcode, carrying the opt-out instruction — typically a few seconds after your POST, not the hours a CSV export or an unread email notification takes.
The outcome is recorded. The response returns a message id, the screening result and your remaining credits. Replies land in the dashboard, not on anyone's personal phone, and you can poll delivery status or have a payload pushed to your own endpoint.
Lead distribution fails quietly when nobody handles the unhappy path. One of these you must never retry.
| Code | Meaning | What to do |
|---|---|---|
201 | Lead registered, welcome SMS dispatched | Store the returned postcode sector against the lead. |
400 | Missing or invalid fields | Fix the payload; do not retry unchanged. |
401 | Invalid or missing API key | Check the header. Never put the key in client-side code. |
405 | Wrong HTTP method | POST only. OPTIONS returns 200 for CORS preflight; everything else is rejected. |
422 | Number previously opted out | Do not retry. Mark the lead unreachable by SMS and route it another way. |
429 | Daily call limit reached (100 per key per 24h) | Back off and resume; email support to raise the cap. Sandbox keys share this status. |
500 | Unexpected server error | Retry with backoff; contact support with your request id if it persists. |
The 422 is the one worth designing around. It is not a transport failure, it is a lawful-basis answer: that person has told us not to text them. Retrying it is the easiest way to turn a compliance feature into a compliance incident.
Routing a homeowner's mobile number to a third-party tradesperson is a data protection question before it is an engineering one. Your client's compliance team will ask these, so it is worth having the answers first.
Labelling a promotion as a service message to escape the marketing window is the one thing that would put a sender the wrong side of PECR, and the declaration is written into the audit log, so it is not a loophole. Detail on the trades page and in the data processing agreement.
The pattern is the same everywhere: something on your side captures a person who needs a trade, and one API call turns that into a screened text within seconds. Only the trigger changes.
Monetise the high-intent searches that do not convert on your own site. Price comparison →
Route verified policyholders to a trade in their own postcode sector instead of adding call centre load. Insurance claims →
A tenant reports a repair and the trade is contacted before the landlord picks up the phone. Letting agents → · Property management →
Boiler breakdowns and gas or electrical faults are the clearest case for seconds over hours. Utilities →
Add an emergency trade form and turn readers into dispatched leads. News portals →
Contractors buying materials often need emergency sub-trades. Builders merchants →
The platform fee is fixed and you pay for the messages you actually send. You can build the whole integration before paying anything: a sandbox key is free and instant.
Aria, our AI receptionist, is a separate product on its own plans from £59 a month: it answers inbound calls, where this page is outbound dispatch. Current figures for both are on the pricing page.
Lead registration is a single endpoint: POST https://app.pipeiq.co.uk/api/leads/register, authenticated with an X-PipeIQ-Token header and sent as application/json. Only two fields are required, mobile_number and postcode. selected_trade, utm_source and utm_campaign are optional. A 201 Created response means the lead was registered and the welcome SMS was dispatched, and the response body returns the matched postcode sector alongside the success flag.
Apply on the Partner API page. Your company is verified against Companies House in real time and we confirm you are authorised to act for it; the key follows once the application is approved. You do not have to wait to start building, because you can issue yourself a sandbox key instantly: 10 calls over 48 hours, no card.
Yes. A sandbox key puts the whole integration in mock mode. Every sandbox response carries a sandbox flag, no real SMS is sent, no real TPS screening runs and no real credits are consumed, so you can build and demo the flow before anything is billable.
Included on every plan, with no extra charge. Every number is screened against the TPS and CTPS registers before any SMS leaves the platform, and the single-send response returns the screening result so your own logs can record that the check ran.
The lead registration endpoint returns 422 Unprocessable and no message is sent. Do not retry that number. Opt-out is enforced platform-side too: a recipient who replies STOP is removed instantly and never texted again from that number.
POST /api/v1/send sends one SMS and returns a message id, the screening result, the send status and your remaining credits. For volume, POST /api/v1/send-bulk accepts up to 500 numbers in one call with per-number message objects, so each tradesperson gets a personalised message.
Yes. GET /api/v1/status polls delivery status by message id, so you reconcile what you dispatched against what the network confirmed instead of treating a successful API call as a delivered text. POST /api/v1/webhook-test fires a test payload at your own endpoint to verify your handler first.
Plans start free with 10 SMS credits and no card. The Business plan is £199 a month plus from 7.3p per SMS sent, with no setup fee and no minimum term. One credit is one standard SMS segment of up to 160 characters, credits never expire, and all prices exclude VAT.
No. Aria is our AI receptionist, a separate product with its own plans from £59 a month. Aria answers inbound calls; this page is about outbound dispatch. They are billed separately and you do not need one to use the other.