Skip to main content
The ingest endpoint is how the Argus SDKs send error events to the platform. You normally don’t call it directly — the SDK handles serialization, batching, and auth for you. However, this reference is useful when you’re building a custom integration, writing a platform-specific SDK, or debugging exactly what your client is transmitting.

Endpoint

Authentication

This endpoint uses DSN key authentication, not a session cookie. Pass your project’s public key in the X-Sentry-Auth request header using the sentry_key= format. You can find your DSN public key in Project Settings → Client Keys.
Alternatively, you can pass the key as a query parameter:
Session-based auth tokens are not accepted here. Use the DSN key.

Path Parameters

projectId
string
required
The project ID extracted from your DSN. The DSN format is https://<publicKey>@<host>/<projectId> — the path segment after the host is your projectId.

Request Body

Send a JSON object conforming to the envelope schema below. The exception field is the only required top-level key.

Top-level fields

exception
object
required
The error payload. Contains the exception class, message, and full stack trace. See the Exception object section for the full shape.
level
string
Severity level of the event. Accepted values: fatal, error, warning, info, debug. Defaults to error.
timestamp
number
When the error occurred, expressed as milliseconds since the Unix epoch (i.e. the value of Date.now()). Must be ≥ 1577836800000 (2020-01-01). Omit this field to let the server use the receipt time.
environment
string
The deployment environment, e.g. production, staging, or development.
release
string
The release identifier for your application, e.g. a semantic version 1.4.2 or a Git SHA.
user
object
Information about the affected user. Both fields are optional but at least one improves issue triage.
FieldTypeDescription
idstringYour internal user ID
emailstringUser’s email address
breadcrumbs
array
An ordered list of events that led up to the error — navigation changes, log lines, network requests, etc. Maximum 100 breadcrumbs per envelope.Each breadcrumb has the following fields:
FieldTypeRequiredDescription
typestringCategory label, e.g. navigation, http
messagestringHuman-readable description
timestampnumberMilliseconds since epoch (Date.now())
dataobjectArbitrary key/value metadata
tags
object
A flat Record<string, string> of arbitrary tags you want to associate with this event, e.g. { "region": "us-east-1", "tenant": "acme" }. All keys and values must be strings.
request
object
Metadata about the HTTP request that triggered the error.
FieldTypeDescription
urlstringFull request URL
methodstringHTTP method
headersRecord<string, string>Request headers map
contexts
object
Runtime context details about the client environment.
FieldTypeDescription
browser.namestringBrowser name, e.g. Chrome
browser.versionstringBrowser version, e.g. 125.0
os.namestringOperating system, e.g. macOS
os.versionstringOS version, e.g. 14.4

Exception object

The exception object is required and must include a non-empty stack trace.
exception.type
string
required
The error class name, e.g. TypeError, RangeError, or your custom exception class.
exception.value
string
required
The error message string, e.g. Cannot read properties of undefined (reading 'id').
exception.stacktrace.frames
array
required
An array of stack frames in innermost-first order (the frame at index 0 is the throw site). Must contain at least one frame.
FieldTypeRequiredDescription
filenamestringSource file path or URL
linenointegerLine number (must be a positive integer)
functionstringFunction or method name
colnointegerColumn number

Example Request

Responses

StatusMeaning
200Event accepted and recorded.
400Invalid envelope — validation failed. The response body contains field-level errors.
401Missing or invalid DSN public key in X-Sentry-Auth.
429Rate limit or monthly event quota exceeded.

200 — Accepted

400 — Validation Error

Timestamp must be in milliseconds, not seconds. Always use Date.now() (e.g. 1720000000000), never Math.floor(Date.now() / 1000). The validator enforces a lower bound of 1577836800000 (2020-01-01); a Unix seconds value (~1.7e9) falls well below this bound and is rejected with HTTP 400.

Transaction Envelopes (performance)

The same endpoint also accepts performance envelopes, discriminated by "type": "transaction". They pass the same DSN auth, rate limit, and quota chain as error envelopes.
type
'transaction'
required
Marks the envelope as a performance transaction instead of an error event.
name
string
required
Operation label, e.g. page.load /dashboard (1–200 chars).
duration
number
required
Total duration in milliseconds (≥ 0).
timestamp
number
required
Milliseconds since epoch — same rule as error envelopes.
status
string
Outcome, e.g. ok (default).
vitals
object
Optional web vitals: { lcp?, cls?, fcp?, ttfb? } — LCP/FCP/TTFB in ms, CLS unitless.
Example: