## Get a span

`spans.retrieve(strspan_id)  -> Span`

**get** `/v5/spans/{span_id}`

Retrieve a single span by its id.

The span is read from the legacy trace store or, for accounts migrated to the
tracing service, from that service — with automatic fallback to the legacy
trace store on error unless the account is in strict mode, where a
tracing-service failure surfaces as a 503. Access is authorized against the
span's parent trace, so a span in a trace the caller cannot read is rejected;
an unknown id returns 404. `input_tokens` and `output_tokens` carry the token usage the
span's producer reported at ingest, and are absent both for a span that reported none and for
every span served from the legacy trace store, which keeps no token counts.

### Parameters

- `span_id: str`

### Returns

- `class Span: …`

  - `id: str`

  - `account_id: str`

  - `name: str`

  - `start_timestamp: datetime`

  - `trace_id: str`

    id for grouping traces together, uuid is recommended

  - `application_interaction_id: Optional[str]`

    The interaction ID this span belongs to

  - `application_variant_id: Optional[str]`

    The id of the application variant this span belongs to

  - `created_by: Optional[Identity]`

    The identity that created the entity.

    - `id: str`

    - `type: Literal["user", "service_account"]`

      - `"user"`

      - `"service_account"`

    - `object: Optional[Literal["identity"]]`

      - `"identity"`

  - `end_timestamp: Optional[datetime]`

  - `expected: Optional[Dict[str, object]]`

  - `group_id: Optional[str]`

    Reference to a group_id

  - `input: Optional[Dict[str, object]]`

  - `input_tokens: Optional[int]`

    Prompt tokens the producer reported for this span, absent when it reported none. Same quantity the input_tokens sort orders by.

  - `metadata: Optional[Dict[str, object]]`

  - `object: Optional[Literal["span"]]`

    - `"span"`

  - `obs_span_id: Optional[str]`

    W3C span id of the observability span this span executed in.

  - `obs_trace_id: Optional[str]`

    W3C trace id of the observability trace this span executed in. Null for spans written without the edge, and for accounts still served by the legacy trace store.

  - `output: Optional[Dict[str, object]]`

  - `output_tokens: Optional[int]`

    Completion tokens the producer reported for this span, absent when it reported none. Same quantity the output_tokens sort orders by.

  - `parent_id: Optional[str]`

    Reference to a parent span_id

  - `status: Optional[SpanStatus]`

    - `"SUCCESS"`

    - `"ERROR"`

    - `"CANCELED"`

  - `type: Optional[SpanType]`

    - `"TEXT_INPUT"`

    - `"TEXT_OUTPUT"`

    - `"COMPLETION_INPUT"`

    - `"COMPLETION"`

    - `"KB_RETRIEVAL"`

    - `"KB_INPUT"`

    - `"RERANKING"`

    - `"EXTERNAL_ENDPOINT"`

    - `"PROMPT_ENGINEERING"`

    - `"DOCUMENT_INPUT"`

    - `"MAP_REDUCE"`

    - `"DOCUMENT_SEARCH"`

    - `"DOCUMENT_PROMPT"`

    - `"CUSTOM"`

    - `"CODE_EXECUTION"`

    - `"DATA_MANIPULATION"`

    - `"EVALUATION"`

    - `"FILE_RETRIEVAL"`

    - `"KB_ADD_CHUNK"`

    - `"KB_MANAGEMENT"`

    - `"GUARDRAIL"`

    - `"OUTPUT_GUARDRAIL"`

    - `"TRACER"`

    - `"AGENT_TRACER"`

    - `"AGENT_WORKFLOW"`

    - `"STANDALONE"`

### Example

```python
import os
from scale_gp_beta import SGPClient

client = SGPClient(
    api_key=os.environ.get("SGP_API_KEY"),  # This is the default and can be omitted
)
span = client.spans.retrieve(
    "span_id",
)
print(span.id)
```

#### Response

```json
{
  "id": "id",
  "account_id": "account_id",
  "name": "name",
  "start_timestamp": "2019-12-27T18:11:19.117Z",
  "trace_id": "trace_id",
  "application_interaction_id": "application_interaction_id",
  "application_variant_id": "application_variant_id",
  "created_by": {
    "id": "id",
    "type": "user",
    "object": "identity"
  },
  "end_timestamp": "2019-12-27T18:11:19.117Z",
  "expected": {
    "foo": "bar"
  },
  "group_id": "group_id",
  "input": {
    "foo": "bar"
  },
  "input_tokens": 0,
  "metadata": {
    "foo": "bar"
  },
  "object": "span",
  "obs_span_id": "obs_span_id",
  "obs_trace_id": "obs_trace_id",
  "output": {
    "foo": "bar"
  },
  "output_tokens": 0,
  "parent_id": "parent_id",
  "status": "SUCCESS",
  "type": "TEXT_INPUT"
}
```
