Tempo REST Integration — Outbound Publishing
Overview
Tempo can publish platform events to an external HTTP(S) endpoint that you (the partner) operate. For each event, Tempo sends a single HTTP POST with a JSON body to your configured URL.
REST is one of three outbound transports Tempo supports (MQTT, RabbitMQ, REST); this document covers REST only.
Endpoint & request
| Aspect | Value |
|---|---|
| Method | POST |
| URL | The single endpoint URL configured for your integration |
| Body | Event JSON (UTF-8) |
Content-Type |
application/json |
| Request timeout | 60 seconds |
| Redirects | Followed |
| TLS verification | Enforced by default; can be relaxed per endpoint (see Caveats) |
REST has no topic, exchange, or routing key. Every event for the integration is POSTed to the same configured URL — your service distinguishes event kinds from the request headers and/or body contents (see below).
Headers
Each request includes:
| Header | Value |
|---|---|
Content-Type |
application/json |
X-Request-Id |
The event's ID (event_id / EventID from the payload) |
X-Correlation-Id |
Same value as X-Request-Id |
| Auth header | Depends on auth type (see below) |
Authentication
Two auth schemes are supported for outbound REST:
- Basic —
Authorization: Basic base64(username:password) - API key — a single custom header whose name is your configured key name and whose value is the secret (e.g.
X-API-Key: <secret>)
Payload
The request body is the event's JSON object, specific to the event type (e.g. a batch-run-status object, an inventory-movement object).
Metadata is merged into the body under a top-level Metadata key only when the event configuration has metadata-in-payload enabled:
{
"...event-specific fields...": "...",
"Metadata": {
"OrganizationID": "…",
"OrganizationName": "…",
"OrganizationURL": "…",
"EventType": "Batch",
"EventTrigger": "batch_run_status",
"Subscriber": "<your endpoint name>",
"CreatedBy": "<user email or 'System Auto Execution'>",
"SourceEnvironment": "<environment>",
"CreationDateTime": "2026-06-18T00:00:00.000Z"
}
}
When metadata-in-payload is not enabled, the body is just the raw event object with no Metadata wrapper. The event type and trigger are still recoverable from the event payload and can be correlated via X-Request-Id.
Event kinds you may receive
The kind of event is determined by the event configurations enabled for your integration. Possible events include batch run status, procedure run state, step execution, material inventory movement, equipment status, exception sync, and the printing events (sublot, dispense, material outputs, equipment, create kit, sample, load array, create label).
What you need to provide
- A single HTTPS endpoint URL that accepts
POSTwith a JSON body - Auth details: either Basic credentials, or an API-key header name + secret
- Confirmation of whether you want the
Metadatablock included in payloads
Caveats
- Tempo does not currently assert on the HTTP response status — a non-2xx response is not treated as a hard publish failure on Tempo's side, so your endpoint should be resilient and idempotent (deduplicate using
X-Request-Id).