Skip to content

Observability

Send a project's telemetry on to any OTLP/HTTP endpoint as it arrives: a collector, or a vendor that takes OTLP. signals are traces, logs (requests go as log records) and metrics, all three unless you say; headers are sent with each request, such as an API key, and are written, never read back.

POST/workspaces/{workspace}/projects/{project}/observability/exports

Needs the Admin role.

endpoint is the OTLP/HTTP base address; /v1/traces, /v1/logs and /v1/metrics are added. Requests go as log records. Telemetry is sent on as it arrives, from then on. Needs the Admin role.

  • Authentication: Required. Send an access token as Authorization: Bearer.
  • MCP tool: None. Signing in is on the REST API only.
Name Type Required Description
workspace string Yes The workspace’s slug, e.g. “flagon-io”.
project string Yes The project’s slug, as in g1t.sh/{workspace}/{project}.

Send a JSON object. Names are snake_case, as in responses; the camelCase spelling is accepted too.

Name Type Required Description
name string Yes Its name, for people.
endpoint string Yes The OTLP/HTTP base address, such as https://otlp.example.com; /v1/traces and the rest are added.
signals array of strings No What it sends: traces, logs and metrics. All three unless you say. One of traces, logs, metrics.
headers object No Headers sent with each request, such as an API key. Written, never read back; “” removes one.
enabled boolean No Whether it sends. True unless you say.
curl -X POST https://api.g1t.sh/workspaces/flagon-io/projects/g1t/observability/exports \
-H "Authorization: Bearer $G1T_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Honeycomb",
"endpoint": "https://api.honeycomb.io",
"signals": [
"traces",
"logs"
],
"headers": {
"x-honeycomb-team": "hcaik_…"
}
}'

A successful request answers 200 with:

{
"id": "x7d2k9m4",
"name": "Honeycomb",
"endpoint": "https://api.honeycomb.io",
"signals": [
"traces",
"logs"
],
"header_names": [
"x-honeycomb-team"
],
"enabled": true,
"last_error": null,
"last_sent_us": null
}

A failed request answers with one of these statuses and a body like {"error": {"code": "not_found", "message": "Repository not found."}}. See errors.

Status Code When
401 unauthenticated A token is required, or the one sent is not valid.
403 forbidden The token is valid but not allowed to do this, such as a member-only change, or a token without the scope it needs.
404 not_found It does not exist, or you cannot see it.
409 conflict The request conflicts with the current state.
422 invalid The input is not valid. message says which field and why.