Documentation
Sending

Error Codes

HTTP status codes and error responses returned by the LDM API.

Error response format

All errors follow a consistent JSON structure:

{
  "error": {
    "code": "error_code",
    "message": "Human-readable description.",
    "details": {}
  }
}

HTTP status codes

CodeStatusDescription
400Bad RequestRequest body is malformed or missing required fields.
401UnauthorizedMissing or invalid API key.
402Payment RequiredFree tier exhausted. Upgrade to continue.
403ForbiddenCreative not approved or insufficient permissions.
404Not FoundResource does not exist.
429Too Many RequestsRate limit exceeded. Check Retry-After header.
500Internal Server ErrorUnexpected server error. Retry or contact support.

Error examples

400 Bad Request

{
  "error": {
    "code": "validation_error",
    "message": "Request body validation failed.",
    "details": {
      "fields": {
        "to": "Must be a valid email address.",
        "subject": "Required field is missing."
      }
    }
  }
}

401 Unauthorized

{
  "error": {
    "code": "invalid_api_key",
    "message": "The API key provided is invalid or has been revoked."
  }
}

402 Payment Required

{
  "error": {
    "code": "free_tier_exhausted",
    "message": "Your free tier of 500 deliveries has been used. Upgrade to a paid plan.",
    "details": {
      "deliveries_used": 500,
      "deliveries_limit": 500
    }
  }
}

403 Forbidden

{
  "error": {
    "code": "creative_not_approved",
    "message": "The creative cr_9f2a... has not been approved. Messages cannot be sent with a pending or rejected creative.",
    "details": {
      "creative_id": "cr_9f2a...",
      "moderation_status": "rejected"
    }
  }
}

404 Not Found

{
  "error": {
    "code": "not_found",
    "message": "Message msg_01HQX7kP... not found."
  }
}

429 Too Many Requests

{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests. Please wait 42 seconds before retrying.",
    "details": {
      "retry_after": 42
    }
  }
}

500 Internal Server Error

{
  "error": {
    "code": "internal_error",
    "message": "An unexpected error occurred. Please try again later.",
    "details": {
      "request_id": "req_abc123..."
    }
  }
}