Grafana Cloud

Generation ingest API

The generation ingest API receives structured generation and workflow step data from Agent Observability SDKs. It supports both HTTP and gRPC transports.

Before you begin

  • Agent Observability is enabled on your Grafana Cloud stack.
  • You have the Agent Observability API URL, instance ID, and Grafana Cloud access policy token. Refer to Use Agent Observability on Grafana Cloud for setup steps.
  • Your producer can assign stable generation IDs so retries are idempotent.

Endpoints

TransportEndpoint
HTTPPOST /api/v1/generations:export
gRPCagento11y.v1.GenerationIngestService.ExportGenerations

Workflow step endpoints

Use workflow step endpoints to export non-LLM execution nodes in an agentic workflow. Workflow steps are linked to generations and appear in the conversation graph and detail view.

TransportEndpoint
HTTPPOST /api/v1/workflow-steps:export
gRPCagento11y.v1.WorkflowStepIngestService.ExportWorkflowSteps

Authentication

Use the Grafana Cloud instance ID and Grafana Cloud access policy token you collected from Agent Observability. HTTP requests without valid credentials receive 401 Unauthorized. gRPC requests without valid credentials receive Unauthenticated.

Request body

Each request contains an array of generation objects. Key fields:

FieldRequiredDescription
idYesUnique, stable generation identifier assigned by your producer.
conversation_idYesGroups generations into a conversation thread.
model.providerYesLLM provider name, for example, openai.
model.nameYesModel name, for example, gpt-4o.
modeNoSYNC or STREAM. Default: SYNC.
agent_nameNoAgent identifier for catalog tracking.
agent_versionNoSDK-declared version label. Set this for agent catalog versions and per-version Performance charts.
effective_versionNoSDK-supplied catalog key. Must match sha256:<64 lowercase hex> when set.
system_promptNoSystem prompt text.
inputNoArray of input messages.
outputNoArray of output messages.
toolsNoArray of tool definitions.
usageNoToken usage breakdown.
timestampsNoStart, first token, and end timestamps.
metadataNoKey-value metadata pairs.
tagsNoString tags for filtering.
trace_idNoOpenTelemetry trace ID.
span_idNoOpenTelemetry span ID.
parent_generation_idsNoList of upstream generation IDs for multi-agent dependency tracking.

Generation and conversation IDs are opaque strings, not necessarily UUIDs. You can use IDs that contain reserved URL characters, for example, session/customer-support/42. Keep the original value in the export payload and reuse each generation ID when retrying its export.

Message parts

Messages can use the system, user, assistant, or tool role. Put model instructions in the top-level system_prompt field when your SDK or framework exposes one. If your producer represents instructions as chat history instead, send them as system role input messages. Evaluation targets and prompt-template variables read the top-level system_prompt field first, then fall back to text from system role input messages when that field is empty.

Message parts can contain text, thinking, tool_call, tool_result, or