06.13.2025-enhanced-span-creation-and-logging.md•1.23 kB
---
description: Available in Phoenix 10.12+
---
# 06.13.2025: Enhanced Span Creation and Logging 🪐
**New Features:**
* Added `POST /projects/{project_identifier}/spans` route for span ingestion.
* Added `log_spans` client method to submit a sequence of spans, rejecting the entire batch if any span is invalid or not unique.
* Added `log_spans_dataframe` for submitting spans as a dataframe.
* Introduced `uniquify_spans` and `uniquify_spans_dataframe` helpers to regenerate span and trace IDs while preserving relationships.
* Improved validation and error handling to prevent partial ingestion and ensure safe, conflict-free span creation.
#### Example Usage
```python
from phoenix.client import Client
from phoenix.client.helpers.spans import uniquify_spans
client = Client()
spans = [
{
"name": "llm_call",
"context": {"trace_id": "trace_123", "span_id": "span_456"},
"start_time": "2024-01-15T10:00:00Z",
"end_time": "2024-01-15T10:00:05Z",
"span_kind": "LLM"
}
]
unique_spans = uniquify_spans(spans)
result = client.spans.log_spans(
project_identifier="my-project",
spans=unique_spans,
)
```
{% embed url="https://github.com/Arize-ai/phoenix/pull/8005" %}