Dashboard

HTTP API

Send events and publish maps from any server.

Last updated Sep 29, 2026

The SDK uses this API for you. Call it directly from any server if you are not using Roblox.

Send events

Request
curl -X POST https://api.rostructure.com/v1/events/batch \
  -H "X-Project-Id: my_game" \
  -H "X-Ingestion-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{"events":[{ ...event... }]}'
Response, 202
{ "accepted": 1, "duplicates": 0, "rejected": [] }
  • Invalid events are rejected individually with issues and the rest are stored. A malformed body is rejected whole.
  • Events are identified by (projectId, eventId). Sending one again is safe: it is counted as a duplicate and not stored twice.
  • Every event projectId must match X-Project-Id.

Status codes

StatusMeaningWhat the SDK does
202AcceptedDone
400Malformed body or envelopeDrops the batch
401Missing or invalid keyPauses sending for 5 minutes
413Body over 256 KiB or more than 100 eventsDrops the batch
429Rate limited (honours Retry-After)Retries with backoff
5xx / networkTemporary failureRetries with backoff

Map exports

PUT /v1/maps publishes a map, or a chunked manifest, for a project, place and build. PUT /v1/maps/chunks uploads chunks with the same headers. A map is frozen once events reference its build; publish a corrected map under a new buildId.