Testing with curl
Test the full Emban flow without writing code.
Verification map
Use curl to validate the same flow your real backend will eventually automate.
Data
Events
Start here if you still need to stabilize the event model before you test ingestion and discovery.
Isolation
Tenants
Remember that the final signed session must stay customer-scoped, not just dashboard-scoped.
Reference
API Reference
Keep payload shapes and endpoint behavior open while you run the manual flow below.
Proof
Live demo
Compare your raw API walkthrough with a mounted signed session and real runtime events.
Setup
export EMBAN_ADMIN_KEY="eb_adm_your_key_here"
export EMBAN_INGEST_KEY="eb_ing_your_key_here" # optional for production-like testing
export EMBAN="https://emban.sidelabs.dev"
For a quick walkthrough you can use EMBAN_ADMIN_KEY everywhere below. For a production-like flow, use EMBAN_INGEST_KEY only for /v1/events and keep EMBAN_ADMIN_KEY for dashboard and embed-session calls.
End-to-end sequence
- Ingest: post seeded events for one tenant.
- Discover: confirm Emban sees the event names and dimensions you expect.
- Surface: auto-create or inspect a dashboard.
- Session: mint a tenant-scoped signed embed session.
- Validate: open the returned
embed_urlin a browser or compare it with Live demo.
Send events
curl -X POST $EMBAN/v1/events \
-H "Authorization: Bearer ${EMBAN_INGEST_KEY:-$EMBAN_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"events": [
{"tenant_id":"acme","event_name":"api.call","timestamp":"2026-03-29T10:00:00Z",
"user_id":"u1","string_props":{"model":"gpt-4"},"numeric_props":{"tokens":100}},
{"tenant_id":"acme","event_name":"api.call","timestamp":"2026-03-29T10:05:00Z",
"user_id":"u2","string_props":{"model":"claude-3"},"numeric_props":{"tokens":250}},
{"tenant_id":"acme","event_name":"api.call","timestamp":"2026-03-29T10:10:00Z",
"user_id":"u1","string_props":{"model":"gpt-4"},"numeric_props":{"tokens":75}}
]
}'
# {"accepted":3,"status":"ok"}
Discover events
curl $EMBAN/v1/discover \
-H "Authorization: Bearer $EMBAN_ADMIN_KEY" | python3 -m json.tool
Auto-create dashboard
curl -X POST $EMBAN/v1/discover/auto-create \
-H "Authorization: Bearer $EMBAN_ADMIN_KEY" | python3 -m json.tool
# Returns dashboard_id
List dashboards
curl $EMBAN/v1/dashboards \
-H "Authorization: Bearer $EMBAN_ADMIN_KEY" | python3 -m json.tool
Create embed session
This request needs an admin key. An ingest key is not enough.
curl -X POST $EMBAN/v1/embed-sessions \
-H "Authorization: Bearer $EMBAN_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"tenant_id": "acme",
"dashboard_id": "YOUR_DASHBOARD_ID",
"expires_in": 3600
}' | python3 -m json.tool
# Returns embed_url — open in browser
Query data
curl "$EMBAN/v1/query?event_name=api.call&metric=count&period=7d&tenant_id=acme" \
-H "Authorization: Bearer $EMBAN_ADMIN_KEY" | python3 -m json.tool
Validation flow: this guide proves the server-side API path. Once curl succeeds, move to Embed Runtime or the Node.js Backend guide to wire the same flow into a trusted app backend.