Partner API — Developer Reference

PipeIQ Partner API

Integrate TPS-screened SMS win-back into your platform. Sandbox key in seconds — no card, 10 free calls, mock responses.

Get a sandbox key free →

No card  ·  10 calls  ·  Expires 48h  ·  Sandbox mode — no real SMS sent

Three steps to your first send

Get a sandbox key, check your credits, send your first SMS — all without a live account.

1

Get a sandbox key

POST your email to get sk_sandbox_* — 10 calls, expires 48h, no card.

curl -X POST https://app.pipeiq.co.uk/api/auth/sandbox-key \
  -H "Content-Type: application/json" \
  -d '{"email":"you@yourco.com"}'

Response: {"key":"sk_sandbox_xxx","expires":"...","calls_remaining":10}

2

Check your credits

Verify the key is live and see your sandbox balance.

curl https://app.pipeiq.co.uk/api/v1/credits \
  -H "X-PipeIQ-Token: sk_sandbox_xxx"

Response: {"balance":500,"plan":"sandbox","sandbox":true}

3

Send a test SMS

Use a sandbox number — no real SMS is sent, TPS screening is mocked.

curl -X POST https://app.pipeiq.co.uk/api/v1/send \
  -H "X-PipeIQ-Token: sk_sandbox_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+447700900001",
    "message": "Hi — we have a special offer for you. Reply STOP to opt out."
  }'

Response: {"success":true,"message_sid":"sandbox_xxx","tps_status":"clean","sandbox":true}

Full endpoint reference

Base URL: https://app.pipeiq.co.uk  ·  Auth: X-PipeIQ-Token: your_key header

Method Path Description Status
POST /api/auth/sandbox-key Issue a sk_sandbox_* key — 10 calls, 48h expiry, no card LIVE
GET /api/v1/credits Check credit balance, plan, and trial expiry LIVE
POST /api/v1/send TPS-screen and send a single SMS — PECR compliant by default LIVE
POST /api/v1/send-bulk Bulk send up to 500 numbers in one call (per-number message objects) LIVE
GET /api/v1/status Poll delivery status by message_sid LIVE
POST /api/v1/webhook-test Fire a test webhook payload to your endpoint URL LIVE

Endpoint details

Copy-paste examples for every endpoint. All examples use curl — the same headers and body work in any language.

GET
/api/v1/credits
Check credit balance and plan details

Request

curl https://app.pipeiq.co.uk/api/v1/credits \
  -H "X-PipeIQ-Token: sk_sandbox_xxx"

Response

{
  "balance": 500,
  "plan": "sandbox",
  "trial_expires": "2026-07-27T10:00:00.000Z",
  "sandbox": true
}
POST
/api/v1/send
Send a TPS-screened SMS to one number. STOP clause auto-appended if missing.

Request

curl -X POST https://app.pipeiq.co.uk/api/v1/send \
  -H "X-PipeIQ-Token: sk_sandbox_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+447700900001",
    "message": "Hi — we have a special offer for you. Reply STOP to opt out.",
    "sender_id": "PipeIQ"
  }'

Response — clean number

{
  "success": true,
  "message_sid": "sandbox_Mxxxxxxxxxxxxxxxx",
  "tps_status": "clean",
  "sandbox": true
}

Response — TPS blocked (no credit charged)

{
  "success": false,
  "status": "blocked_tps",
  "tps_status": "registered",
  "sandbox": true
}
POST
/api/v1/send-bulk
Bulk send up to 500 numbers. Each entry is a per-number object with to and message.

Request body

curl -X POST https://app.pipeiq.co.uk/api/v1/send-bulk \
  -H "X-PipeIQ-Token: sk_sandbox_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      { "to": "+447700900001", "message": "Win back offer: 20% off. Reply STOP to opt out." },
      { "to": "+447700900002", "message": "Win back offer: 20% off. Reply STOP to opt out." }
    ],
    "sender_id": "PipeIQ"
  }'

Response

{
  "queued": 2,
  "sandbox": true,
  "results": [
    { "to": "+447700900001", "message_sid": "sandbox_M001", "tps_status": "clean" },
    { "to": "+447700900002", "message_sid": "sandbox_M002", "tps_status": "clean" }
  ]
}

Note: each message object must include both to and message. TPS-blocked numbers are silently skipped and not charged.

GET
/api/v1/status?message_sid=sandbox_xxx
Poll delivery status for any message_sid returned by /send or /send-bulk.

Request

curl "https://app.pipeiq.co.uk/api/v1/status?message_sid=sandbox_M001" \
  -H "X-PipeIQ-Token: sk_sandbox_xxx"

Response

{
  "status": "delivered",
  "sandbox": true
}
POST
/api/v1/webhook-test
Fire a test webhook payload to your endpoint so you can verify your handler before going live.

Request

curl -X POST https://app.pipeiq.co.uk/api/v1/webhook-test \
  -H "X-PipeIQ-Token: sk_sandbox_xxx" \
  -H "Content-Type: application/json" \
  -d '{"webhook_url":"https://yourapp.com/hooks/pipeiq"}'

Payload delivered to your URL

{
  "event": "message_sent",
  "message_sid": "SMxxxxxxxxxxxxxxxxxxxx",
  "to": "+447700900001",
  "status": "sent",
  "tps_result": {
    "screened": true,
    "registered": false,
    "ctps_registered": false
  },
  "timestamp": "2026-07-25T10:00:00.000Z"
}

Test safely — zero real sends

Sandbox keys are fully isolated

Every sandbox response includes "sandbox": true. No real SMS is sent, no real TPS screening runs, no real credits are consumed. Safe to integrate, demo, or load-test before going live.

No real SMS sent No real TPS calls No credits consumed Expires 48h 10 calls per key "sandbox":true in every response

Production keys (Agency £349/mo, White Label £599/mo) use real TPS screening via tpsapi.com — ICO registration ZC164080.

PECR-compliant by default

Every live send goes through TPS/CTPS screening before dispatch. Non-compliant numbers are blocked automatically — no charge.

TPS screening

Every number checked against TPS and CTPS before send. Registered numbers blocked, no credit charged.

Opt-out enforcement

STOP clause appended automatically if missing from message body. Opt-outs honoured immediately.

ICO registered

TradeBoost AI Ltd — ICO registration ZC164080. Data processed under UK GDPR and PECR.

GSM-7 encoding

Smart quotes, em-dashes, and emoji auto-converted to GSM-7 — avoids the 3x segment cost of UCS-2.

Get Started

Get a sandbox key now

Free, no card, live in 30 seconds. Move to a production key when you're ready — Agency from £349/mo, White Label from £599/mo.

Get sandbox key — free →

Questions? hello@pipeiq.co.uk