Introduction

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 URLhttps://api.directiq.com
ProtocolHTTPS only
FormatJSON (UTF-8) for requests and responses
AuthenticationX-API-Key header (recommended) or HTTP Basic. See Authentication
Current versionv2, in the URL path. See Versioning
Rate limit500 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

StatusMeaning
200 OKThe request succeeded.
201 CreatedThe resource was created. Its URL is in the Location header.
204 No ContentThe request succeeded and there is nothing to return, for example after a delete.
400 Bad RequestThe request is malformed or a field is invalid.
401 UnauthorizedThe credentials are missing or wrong.
403 ForbiddenThe credentials are valid, but the account cannot perform this action.
404 Not FoundThe resource does not exist, or it belongs to another account.
409 ConflictThe request conflicts with the resource's current state.
410 GoneThe endpoint has been retired. See Versioning.
422 Unprocessable EntityThe request is valid, but a business rule rejected it, for example an unconfirmed sender.
429 Too Many RequestsYou exceeded the rate limit.
5xxSomething 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 code in your error handling. It is stable; title and detail are written for people and may change.
  • errors appears only on validation errors. It maps each field name to its messages.
  • Every response includes an X-Request-Id header. Quote it, or request_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"
  • limit sets the page size. It accepts 1 to 100 and defaults to 25.
  • When has_more is true, request the next page with page_token set to the next_page_token value 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: 1793750460

X-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

Don't have a DirectIQ account yet? Sign up.