CrossInbox

Developer API

Every signup on your site, straight into your email list

Add one HTTP call to your signup form and each new customer lands in a named CrossInbox list — deduplicated, campaign-ready. $5 one-time, included free on Growth & Scale.

Authentication

Every request carries your workspace key in the X-Api-Key header (a Authorization: Bearer token works too). Get or rotate your key from My App → Developer API in the portal. Treat it like a password — anyone holding it can add contacts to your workspace.

curl https://www.crossinbox.com/api/v1/ping -H "X-Api-Key: cxi_your_key_here"

A valid key returns {"ok":true,"workspace":"Your Co", …} — the quickest way to confirm your integration.

POST /api/v1/contacts

Adds (or updates) a contact and files it into a list. Lists are created on the fly, so each of your sites or forms can feed its own list just by naming it — no setup step.

FieldTypeNotes
emailstring, requiredThe subscriber's email. Same email never duplicates.
namestring, optionalDisplay name for personalised campaigns.
phonestring, optionalLets WhatsApp/SMS reach the same person later.
liststring, optionalTarget list name. Defaults to API Signups.

cURL

curl -X POST https://www.crossinbox.com/api/v1/contacts \
  -H "X-Api-Key: cxi_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"email":"jane@example.com","name":"Jane Doe","list":"Website Signups"}'

JavaScript — drop into your signup handler

// After your own signup succeeds (run this SERVER-SIDE so your key stays secret):
await fetch('https://www.crossinbox.com/api/v1/contacts', {
  method: 'POST',
  headers: { 'X-Api-Key': process.env.CROSSINBOX_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({ email: user.email, name: user.name, list: 'Website Signups' }),
});

PHP

$ch = curl_init('https://www.crossinbox.com/api/v1/contacts');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['X-Api-Key: '.getenv('CROSSINBOX_KEY'), 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode(['email' => $email, 'name' => $name, 'list' => 'Website Signups']),
]);
curl_exec($ch);

Responses

201 Created   {"ok":true,"contact_id":42,"list":"Website Signups","created":true}
200 OK        {"ok":true,"contact_id":42,"list":"Website Signups","created":false}  // already existed — updated
401           {"message":"Missing API key. Send it in the X-Api-Key header."}
403           {"message":"API access is not active for this workspace."}
422           {"message":"The email field must be a valid email address."}
429           Too many requests — the limit is 120/minute per key.

The pattern: one list per website

Running several sites or landing pages? Send a different list value from each — "Store A Signups", "Course Waitlist", "Black Friday LP" — and every audience stays cleanly separated in your inbox, each ready for its own campaign.

Simple pricing

A one-time $5 unlocks the API on any plan — usage itself is free within the 120 req/min limit. On Growth and Scale it's included, no unlock needed.

See plans

Built on official APIs & secured end-to-end

WhatsApp Business API WhatsApp Business API
TwilioSMS
MetaCloud API
256-bit SSL secured connection Secure encrypted payments

256-bit SSL encryption

Secure, encrypted payments

Your data stays private

Cancel anytime, no lock-in

Start free for 1 month