import requests
URL = "https://api.keywordsai.co/v1/traces/ingest"
headers = {
"Authorization": f"Bearer {YOUR_KEYWORDS_AI_API_KEY}",
"Content-Type": "application/json",
}
payload = [
{
"trace_unique_id": "a-trace-id",
"span_unique_id": "root-span-id",
"span_name": "pirate_joke_plus_audience_reactions.workflow",
"span_parent_id": None,
"timestamp": "2025-09-08T07:46:19.041835Z",
"start_time": "2025-09-08T07:46:14.007279Z",
"span_workflow_name": "pirate_joke_plus_audience_reactions",
"span_path": "",
"provider_id": "",
"model": "python",
"input": "{\"args\": [], \"kwargs\": {}}",
"output": "\"python\"",
"encoding_format": "float",
"latency": 5.034556,
"keywordsai_params": {"has_webhook": false, "environment": "prod"},
"disable_log": false
},
{
"trace_unique_id": "a-trace-id",
"span_unique_id": "child-span-id",
"span_name": "openai.chat",
"span_parent_id": "root-span-id",
"timestamp": "2025-09-08T07:46:14.617987Z",
"start_time": "2025-09-08T07:46:14.007452Z",
"span_workflow_name": "pirate_joke_generator",
"span_path": "joke_creation",
"provider_id": "openai",
"model": "gpt-3.5-turbo",
"input": "[{\"role\": \"assistant\", \"content\": \"Why did the opentelemetry developer go broke?\\n\\n\"}, {\"role\": \"user\", \"content\": \"Tell me a joke about opentelemetry\"}]",
"output": "{\"role\": \"assistant\", \"content\": \"Why did the opentelemetry developer go broke?\\n\\n\"}",
"prompt_messages": [
{"role": "assistant", "content": "Why did the opentelemetry developer go broke?\\n\\n"},
{"role": "user", "content": "Tell me a joke about opentelemetry"}
],
"completion_message": {"role": "assistant", "content": "Why did the opentelemetry developer go broke?\\n\\n"},
"encoding_format": "float",
"prompt_tokens": 15,
"completion_tokens": 10,
"cost": 2.25e-05,
"latency": 0.610535,
"keywordsai_params": {"has_webhook": false, "environment": "prod"},
"disable_log": false
}
]
resp = requests.post(URL, json=payload, headers=headers)
print(resp.status_code)
print(resp.text)