Skip to main content
Copy the resolved endpoint from Logs > Settings. The explicit-server route uses the cfx.re join code, not the dashboard’s registered-server ID:
A server-bound key can instead use POST https://logs.fivemesh.io/v1/logs. A global Developer key must use the explicit-server route. Requires bearer authentication with logs:write and an active Logs source.

Request

Send Content-Type: application/json with a stable batch_id and an events array.
This example requires a server-bound key. Generate a new batch and event ID for each new batch and event; preserve them when retrying.

Event fields

The REST API uses snake_case event fields. SDK options such as eventType are translated by the SDK.

Limits and atomicity

  • 1 to 500 events per HTTP batch.
  • At most 1 MiB of JSON per request.
  • At most 16 KiB per event.
  • batch_id uses the same 8–64 character format as event_id.
Validation is atomic: if any event is invalid, the batch is rejected and no events are accepted.

Response and retries

Acceptance returns HTTP 202 with accepted: true, batch_id, accepted_events, ingested_at and replayed. The X-Request-Id header identifies the request; error bodies also include request_id. Retry transient failures with the same batch ID and unchanged payload. Reusing a batch ID with a different payload returns batch_id_conflict. Follow Retry-After on throttled or unavailable responses, and use backoff rather than immediate repeated retries. Keep event IDs stable too, so retry handling and query deduplication can recognize the same event. Acceptance and search visibility are separate; do not create a new batch merely because an event is not yet visible.