Skip to content

Error codes

Errors respond with an HTTP status and a body in the format application/problem+json (RFC 9457). Have your program read code; title and detail are written for humans and may change.

Every response has the X-Request-Id header, the same as request_id in the error. Include it if you contact us at support@qrona.se.

Example
{
  "type": "https://newsletter.qrona.se/developer/api/errors#validation_failed",
  "title": "The details are invalid",
  "status": 422,
  "code": "validation_failed",
  "request_id": "6c0e1f5a-2b8d-4e3f-9a71-0c5d2e8b4f19",
  "errors": [
    {
      "field": "consent_source",
      "message": "Describe how the person gave consent."
    }
  ]
}
400
bad_request
The request could not be read. The body is not valid JSON, or is too large.
401
unauthenticated
API key missing. No Authorization: Bearer header.
401
invalid_key
Unknown API key. The key does not exist (misspelt, or from another environment).
401
key_revoked
The API key has been revoked. An administrator has revoked the key.
401
key_expired
The API key has expired. The key has expired.
401
key_inactive
The API key is no longer valid. The person who created the key no longer has access to the workspace, or the workspace is closed.
402
payment_required
Subscription required. The trial has ended and no payment method has been selected.
403
insufficient_scope
The key lacks the required scope. The key does not have the scope that the request requires.
403
forbidden
Not allowed. The person behind the key does not have the required role, or the contact is outside what the person may see.
403
shared_contact
The contact is shared. The contact is shared from a level above and can only be changed there.
403
workspace_suspended
The workspace is paused. Qrona has paused the workspace.
404
not_found
Not found. The resource does not exist, or is outside what the key is allowed to see.
409
contact_exists
The contact already exists. A contact with this address already exists. Use /contacts/upsert to create or update.
409
contact_erased
The contact has been erased. The contact has been erased (GDPR) and cannot be changed or added again.
409
suppressed
The address is suppressed. The address is on the suppression list.
409
blocked
The address does not receive mailings. The address bounces, has made a spam complaint, is deleted or is suppressed.
409
opted_out
The person has unsubscribed. Only the person themselves can sign up again.
409
sending_not_enabled
Mailings are not approved. The workspace has not been approved for mailings yet, so no confirmation email can be sent.
409
list_in_use
The list is in use. A campaign that is due to be sent uses the list.
409
limit_reached
The limit has been reached. The workspace already has as many stores or webhooks as it can.
409
idempotency_in_progress
The request is already in progress. A request with the same Idempotency-Key is still running. Wait a moment and send it again.
409
idempotency_conflict
idempotency_key is already used. The message's idempotency_key has already been used for a message with other content. The same content again gives the first message.
409
template_not_published
The template is not published. There is a Qrona template with the key, but no published version to make messages from.
409
sender_not_configured
Sender missing. The add-on has no verified sender. An administrator chooses it under Settings → Add-ons.
415
unsupported_media_type
Wrong content type. The body must be sent as application/json.
422
validation_failed
The details are invalid. One or more fields are invalid. See errors[].
422
idempotency_key_reused
Idempotency-Key already in use. The key has already been used for a different request (different path or body) in the last 24 hours. Use a new key for each new request.
429
rate_limited
Too many requests. The key has made too many requests. Wait the number of seconds that Retry-After states.
500
internal_error
Something went wrong on our side. Try again. Refer to request_id if it persists.