Configuration - REST API

2 min read Updated: 11.09.2026

On this page Responses
  1. Responses
  2. Error grouping
  3. Transaction names
  4. Rate limiting
  5. Data you should not send
  6. Protecting the private key

Responses

ResponseMeaning
200 {"success": true}the event was recorded
200 {"success": false}the account has used up its monthly error quota or the body was missing a required field - the two look the same from outside
401 {"message": "Unauthenticated."}the request carried no key in any of the three places
404 {"message": "Project not found."}the key does not match the project in the URL, the project is disabled, or the project genuinely does not exist

A 404 deliberately does not say which of the three it was - the response is not meant to reveal whether a given project token exists at all.

Error grouping

The panel groups events by the fingerprint sha256(project token + type + value) and keeps one row per error per day, with an occurrence counter. That is why type and value need to stay stable across calls for the same error: an order number or a user identifier pasted into value splits one error into a thousand separate rows. Keep the variable part in context - the request URL, the user data or the stack frames - not in the message text.

Transaction names

The transaction field should carry the route pattern, such as GET /orders/{order}, not GET /orders/8123. Otherwise the transaction list in the panel splits into as many rows as there were concrete identifiers.

Rate limiting

Ingest allows 1200 requests per minute per project token (thor.ingest.throttle_per_minute) - a safety valve against a looping client, not a business quota. It is independent of the monthly error quota: going over it ends in a 429, not a 200 {"success": false}. Requests also have a body-size ceiling, 2 MB by default.

Data you should not send

Unlike DockRay's own libraries, the REST API does not filter anything itself - your integration decides what goes into request.headers and the user fields. Do not send Authorization, Cookie or any other header carrying a secret. Only attach an IP address, e-mail address or username when you genuinely need it for diagnosis - it is personal data, not technical metadata.

Protecting the private key

The private key is a project secret, not an identifier. Keep it in environment variables, in a secrets manager or in the server configuration - never in the repository, in logs, in a screenshot or in code sent to the browser. One project can hold many keys, so production and staging should each get their own: either can be revoked on its own without interrupting the others. A suspicion that a key leaked is reason enough to revoke it and generate a new one.

Keep reading

DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.