The DirectIQ API is a RESTful interface to the DirectIQ email marketing platform. It lets you automate contact management, campaigns and transactional email from your own systems.
At a glance
| Base URL | https://api.directiq.com |
| Protocol | HTTPS only |
| Format | JSON (UTF-8) for requests and responses |
| Authentication | X-API-Key header (recommended) or HTTP Basic. See Authentication |
| Current version | v2, in the URL path. See Versioning |
| Rate limit | 500 requests per minute per account |
Make your first request
Copy your X-API-Key from the API Keys page and run:
curl https://api.directiq.com/v2/senders \
-H "X-API-Key: YOUR_X_API_KEY"{
"data": [
{
"id": 1042,
"name": "Jane from Acme",
"email": "[email protected]",
"reply_to": "[email protected]",
"is_default": true,
"status": "confirmed",
"created_at": "2026-09-14T08:21:37Z"
}
],
"has_more": false,
"next_page_token": null
}Requests
- Send every request over HTTPS.
- Send request bodies as JSON with
Content-Type: application/json. - v2 field names, query parameters and error codes use
snake_case. - Timestamps are ISO 8601 in UTC, such as
2026-11-04T09:30:00Z.
Responses
| Status | Meaning |
|---|---|
200 OK | The request succeeded. |
201 Created | The resource was created. Its URL is in the Location header. |
204 No Content | The request succeeded and there is nothing to return, for example after a delete. |
400 Bad Request | The request is malformed or a field is invalid. |
401 Unauthorized | The credentials are missing or wrong. |
403 Forbidden | The credentials are valid, but the account cannot perform this action. |
404 Not Found | The resource does not exist, or it belongs to another account. |
409 Conflict | The request conflicts with the resource's current state. |
410 Gone | The endpoint has been retired. See Versioning. |
422 Unprocessable Entity | The request is valid, but a business rule rejected it, for example an unconfirmed sender. |
429 Too Many Requests | You exceeded the rate limit. |
5xx | Something went wrong on our side. Retry with backoff. |
Errors
v2 errors use the Problem Details format (application/problem+json):
{
"type": "https://docs.directiq.com/errors/validation_failed",
"title": "Validation failed",
"status": 400,
"detail": "One or more fields are invalid.",
"code": "validation_failed",
"request_id": "1-6728a1f3-3c9e0b7d2a4f5e6b7c8d9e0f",
"errors": {
"email": ["Must be a valid email address."]
}
}- Use
codein your error handling. It is stable;titleanddetailare written for people and may change. errorsappears only on validation errors. It maps each field name to its messages.- Every response includes an
X-Request-Idheader. Quote it, orrequest_id, when you contact support.
Pagination
List endpoints return results a page at a time:
curl "https://api.directiq.com/v2/senders?limit=50" \
-H "X-API-Key: YOUR_X_API_KEY"limitsets the page size. It accepts 1 to 100 and defaults to 25.- When
has_moreistrue, request the next page withpage_tokenset to thenext_page_tokenvalue from the previous response. Keep every other parameter the same.
Rate limits
Each account can make 500 requests per minute. Every response reports where you stand:
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 497
X-RateLimit-Reset: 1793750460X-RateLimit-Reset is the Unix time (in seconds) when the current window ends.
When you reach the limit, the API returns 429 Too Many Requests with a Retry-After header that gives the number of seconds to wait. Wait that long before you retry. Clients that keep sending requests after a 429 can have their IP address blocked for a while.
Next steps
- Authentication: choose how to send your credentials.
- Versioning: how versions work and how endpoints are retired.
Don't have a DirectIQ account yet? Sign up.

