API documentation
The SendNext REST API lets your website, store or tools add contacts, manage lists and send campaigns. Every request and response is JSON.
Authentication
Create a key in the app under API keys, then send it with every request. Keys belong to one workspace and only see its data. A key is shown once, so store it safely and revoke it if it leaks.
Each key has permissions. Read only can read everything. Contacts can also add, change and remove contacts and list members. Campaigns can also send. Full access can do all of it.
Add a subscriber
Creates the contact, or updates it if the email already exists. Someone who unsubscribed, bounced or complained is never subscribed again by the API.
Returns 201 for a new contact or 200 for an update:
Send a campaign
Build the campaign in the app, then send it from your code. SendNext runs the same checks as the Send button: a verified sending domain, a postal address, recipients and enough monthly emails left.
Errors
Errors use standard HTTP status codes and a body you can show or log:
401 missing or revoked key · 403 permission, plan or paused account · 404 not found · 409 wrong state · 422 invalid input · 429 rate limit · 500 our side.
Rate limits
Each key can make a set number of requests per minute, depending on your plan. Every response carries X-RateLimit-Limit and X-RateLimit-Remaining. Over the limit you get 429 with Retry-After: 60.
Endpoints
| Method | Path | Permission | What it does |
|---|---|---|---|
| GET | /api/v1/me | Read only | Your workspace, plan and this month's usage. |
| GET | /api/v1/contacts | Read only | List contacts. Filter with ?email=, ?status=, ?list_id=; page with ?page= and ?limit= (max 100). |
| POST | /api/v1/contacts | Contacts | Create or update a contact by email, and add it to lists. |
| GET | /api/v1/contacts/{id} | Read only | One contact, with the lists it's on. |
| PATCH | /api/v1/contacts/{id} | Contacts | Update names and custom fields, or unsubscribe. |
| DELETE | /api/v1/contacts/{id} | Contacts | Delete a contact. |
| GET | /api/v1/lists | Read only | Lists with subscribed and total counts. |
| POST | /api/v1/lists | Contacts | Create a list. |
| POST | /api/v1/lists/{id}/contacts | Contacts | Add existing contacts to a list by contact_ids or emails. |
| DELETE | /api/v1/lists/{id}/contacts | Contacts | Remove contacts from a list. |
| GET | /api/v1/campaigns | Read only | Your 100 most recent campaigns. |
| GET | /api/v1/campaigns/{id} | Read only | A campaign with its report: delivered, opens, clicks, bounces. |
| POST | /api/v1/campaigns/{id}/send | Campaigns | Send a draft now, or pass scheduled_at to schedule it. |
