Skip to main content
The Verilock API uses standard HTTP status codes. 2xx = success, 4xx = client error, 5xx = server error.

Success Codes

CodeNameDescription
200OKRequest succeeded. Response body contains the requested data.
201CreatedResource successfully created (sessions, API keys, webhooks).
204No ContentRequest succeeded with no response body (DELETE operations).

Client Error Codes

CodeNameDescription
400Bad RequestMalformed request body, missing fields, or invalid JSON.
401UnauthorizedAPI key is missing, invalid, or revoked.
403ForbiddenValid key but insufficient permissions. Check your plan or key scopes.
404Not FoundResource does not exist. Verify endpoint URL and resource ID.
409ConflictState conflict (e.g., approving an already-declined session).
422Unprocessable EntityWell-formed request with semantic errors. See details for field-level messages.
429Too Many RequestsRate limit exceeded. Respect the Retry-After header.

Server Error Codes

CodeNameDescription
500Internal Server ErrorUnexpected error on our end. Include X-Request-Id when contacting support.
503Service UnavailableTemporary unavailability. Retry with exponential backoff.

Error Response Format

All errors return a consistent JSON structure:
422 Unprocessable Entity
{
  "error": "validation_error",
  "message": "The given data was invalid.",
  "details": {
    "redirect_url": ["The redirect url must be a valid URL."],
    "document_type": ["The selected document type is invalid."]
  }
}
429 Too Many Requests
{
  "error": "rate_limit_exceeded",
  "message": "Too many requests. Please retry after 30 seconds.",
  "details": {
    "retry_after": 30
  }
}
Every response includes an X-Request-Id header. Always include this when contacting support about a specific error.