Skip to content

Sending Telemetry Data

Send telemetry data to NextEpoch Cloud using the Air API. Telemetry data (logs, metrics, traces) is stored durably and made queryable via the Insights API.

Endpoint

POST https://air.nextepoch.cloud/v1/ingest/{type}

Where {type} is one of: logs, metrics, traces.

Authentication

Include a JWT token from the Identity service in the Authorization header:

bash
Authorization: Bearer <your-jwt-token>

See Authentication for details on obtaining a token.

Sending Logs

bash
curl -X POST https://air.nextepoch.cloud/v1/ingest/logs \
  -H "Authorization: Bearer <your-jwt-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "entries": [
      {
        "timestamp": "2025-01-15T10:30:00Z",
        "level": "info",
        "message": "User signed in",
        "attributes": {
          "user_id": "usr_123",
          "method": "sso"
        }
      }
    ]
  }'

Sending Metrics

bash
curl -X POST https://air.nextepoch.cloud/v1/ingest/metrics \
  -H "Authorization: Bearer <your-jwt-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "entries": [
      {
        "timestamp": "2025-01-15T10:30:00Z",
        "name": "http_request_duration_ms",
        "value": 42.5,
        "tags": {
          "method": "GET",
          "path": "/api/users",
          "status": "200"
        }
      }
    ]
  }'

Sending Traces

bash
curl -X POST https://air.nextepoch.cloud/v1/ingest/traces \
  -H "Authorization: Bearer <your-jwt-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "entries": [
      {
        "timestamp": "2025-01-15T10:30:00Z",
        "trace_id": "abc123",
        "span_id": "span_1",
        "name": "handle_request",
        "duration_ms": 85,
        "status": "ok",
        "attributes": {
          "service": "api-gateway"
        }
      }
    ]
  }'

Batch Ingestion

You can send up to 1000 entries in a single request.

Next Steps

NextEpoch Cloud Documentation