Error codes

Reference4 min read

Errors use standard HTTP status codes, and the body always has the same shape. Every error links back to its entry on this page.

{
  "error": {
    "type": "invalid_request_error",
    "code": "missing_data",
    "message": "Missing required data: purchase_price.",
    "param": "data.purchase_price",
    "doc_url": "https://notriv.com/docs/api/errors#error-missing_data",
    "request_id": "req_9sLx..."
  }
}

Handle errors by code, which never changes. message is for people and may be improved over time. Include request_id when you contact support.

Keys and access

CodeStatusWhat to do
api_key_missing401No key was sent. Add the header Authorization: Bearer nrv_test_...
api_key_invalid401The key is wrong or incomplete. Copy it again, or create a new one.
api_key_revoked401The key was revoked. Create a new one in Developers.
api_key_expired401The key passed its expiry date, or its 24-hour roll overlap ended. Use the new key.
api_key_in_query400The key was put in the URL. Send it in the header instead, and roll the key.
ip_not_allowed403This key only works from certain IP addresses. Add this server’s IP to the key.
account_inactive403The account is suspended or pending. Contact support.
https_required403Use https://, not http://.
test_mode_only403Test helpers need a test key.

Limits and balance

CodeStatusWhat to do
rate_limited429Too many requests this minute. Wait for the Retry-After seconds, then retry.
too_many_auth_failures429Too many wrong keys from your address. Wait a minute and check your key.
daily_limit_reached429Your account hit its daily live-envelope limit. Contact support to raise it.
usage_limit_reached402No signatures left this period. Buy more at the buy_url in the error, then retry. Nothing was sent.
request_too_large413The request is over 30 MB.

Request problems

CodeStatusWhat to do
parameter_missing400A required parameter is missing. param names it.
parameter_invalid400A parameter has the wrong type or value. param names it.
parameter_unknown400A parameter name isn’t recognized. Usually a typo.
invalid_json400The body isn’t valid JSON.
missing_data400Required data values are missing. missing_keys lists all of them.
unknown_data_key400data has a name the document doesn’t use. The message lists the names it expects.
signer_missing400A role in the document has no signer. required_roles lists the roles.
signer_without_fields400A signer has nothing to sign in this document.
no_signature_fields400The PDF has no signature fields. Add tags, send fields, or set signature_page: true.
no_fields_found400A template upload had no tags or form fields.
tag_invalid400A tag in the PDF has an invalid role or name.
file_invalid400Not a PDF, damaged, or password-protected.
file_too_large400Over 25 MB or 200 pages.
resource_missing404Nothing with that ID in this mode. Check you’re using a test key for test objects.
route_not_found404That path doesn’t exist. Check the reference.

Envelope state

CodeStatusWhat to do
envelope_not_draft409Only drafts can be sent. This one was already sent or voided.
envelope_not_sent409This action needs a sent envelope that isn’t complete.
envelope_completed409Completed envelopes are legal records and can’t be voided.
envelope_voided409Already voided.
signer_completed409That signer already signed.
signer_not_ready409Signing order is on and an earlier signer hasn’t finished.
file_not_ready409The signed PDF and audit trail exist once everyone has signed.
delivery_embedded409Reminders only apply to email delivery.

Retries and server errors

CodeStatusWhat to do
idempotency_key_reused422This Idempotency-Key was used for a different request. Use a new key.
idempotency_request_in_progress409The first request with this key is still running. Retry in a moment.
rate_limiter_unavailable503A safety check couldn’t run, so the request was refused. Retry shortly.
api_not_configured503The API isn’t set up on this server. Contact support.
internal_error500Something failed on our side. Retry with the same Idempotency-Key.
Was this page helpful?