Skip to main content

Spans

BaseSpan
Direct link to basespan

Base interface for all span types.

interface BaseSpan<TType extends SpanType> {
/** Unique span identifier */
id: string

/** OpenTelemetry-compatible trace ID (32 hex chars) */
traceId: string

/** Name of the span */
name: string

/** Type of the span */
type: TType

/** When span started */
startTime: Date

/** When span ended */
endTime?: Date

/** Type-specific attributes */
attributes?: SpanTypeMap[TType]

/** User-defined metadata */
metadata?: Record<string, any>

/** Input passed at the start of the span */
input?: SpanInput<TType>

/** Output generated at the end of the span */
output?: SpanOutput<TType>

/** Error information if span failed */
errorInfo?: {
message: string
id?: string
domain?: string
category?: string
details?: Record<string, any>
}

/** Snapshot of the RequestContext */
requestContext?: Record<string, any>
/** Is an event span? (point-in-time: endTime equals startTime) */
isEvent: boolean
}

Span
Direct link to Span

Span interface, used internally for tracing. Extends BaseSpan with lifecycle methods and properties.

interface Span<TType extends SpanType> extends BaseSpan<TType> {
/** Is an internal span? (spans internal to the operation of mastra) */
isInternal: boolean

/** Parent span reference (undefined for root spans) */
parent?: AnySpan

/** Pointer to the ObservabilityInstance instance */
observabilityInstance: ObservabilityInstance
}

Properties
Direct link to Properties

/** Returns TRUE if the span is the root span of a trace */
get isRootSpan(): boolean

/** Returns TRUE if the span is a valid span (not a NO-OP Span) */
get isValid(): boolean

/** Get the closest parent spanId that isn't an internal span */
getParentSpanId(includeInternalSpans?: boolean): string | undefined

/** Returns a lightweight span ready for export */
exportSpan(includeInternalSpans?: boolean): ExportedSpan<TType> | undefined

Methods
Direct link to Methods

end
Direct link to end

end(options?: EndSpanOptions<TType>): void

Ends the span and triggers export to configured exporters. Sets the endTime and optionally updates output, metadata, and attributes.

error
Direct link to error

error(options: ErrorSpanOptions<TType>): void

Records an error on the span. Sets the errorInfo field and can optionally end the span. When the error is an AI SDK APICallError (or wraps one as cause), errorInfo.details also carries the HTTP statusCode, request url, isRetryable flag and provider responseBody.

update
Direct link to update

update(options: UpdateSpanOptions<TType>): void

Updates span data while it's still active. Can modify input, output, metadata, and attributes.

createChildSpan
Direct link to createchildspan

createChildSpan<TChildType extends SpanType>(
options: ChildSpanOptions<TChildType>
): Span<TChildType>

Creates a child span under this span. Child spans track sub-operations and inherit the trace context.

createEventSpan
Direct link to createeventspan

createEventSpan<TChildType extends SpanType>(
options: ChildEventOptions<TChildType>
): Span<TChildType>

Creates an event span under this span. Event spans represent point-in-time occurrences with no duration. They're emitted as soon as they're created, with isEvent: true and an endTime equal to their startTime, so stored and exported records have endedAt equal to startedAt.

ExportedSpan
Direct link to exportedspan

Exported Span interface, used for tracing exporters. A lightweight version of Span without methods or circular references.

interface ExportedSpan<TType extends SpanType> extends BaseSpan<TType> {
/** Parent span id reference (undefined for root spans) */
parentSpanId?: string

/** TRUE if the span is the root span of a trace */
isRootSpan: boolean
}

Span lifecycle events
Direct link to Span lifecycle events

Events emitted during the span lifecycle.

TracingEventType
Direct link to tracingeventtype

enum TracingEventType {
/** Emitted when a span is created and started */
SPAN_STARTED = 'span_started',

/** Emitted when a span is updated via update() */
SPAN_UPDATED = 'span_updated',

/** Emitted when a span is ended via end() or error() */
SPAN_ENDED = 'span_ended',
}

TracingEvent
Direct link to tracingevent

type TracingEvent =
| { type: 'span_started'; exportedSpan: AnyExportedSpan }
| { type: 'span_updated'; exportedSpan: AnyExportedSpan }
| { type: 'span_ended'; exportedSpan: AnyExportedSpan }

Exporters receive these events to process and send trace data to observability platforms.

Union types
Direct link to Union types

AnySpan
Direct link to anyspan

type AnySpan = Span<keyof SpanTypeMap>

Union type for cases that need to handle any span type.

AnyExportedSpan
Direct link to anyexportedspan

type AnyExportedSpan = ExportedSpan<keyof SpanTypeMap>

Union type for cases that need to handle any exported span type.

NO-OP spans
Direct link to NO-OP spans

When tracing is disabled (sampling returns false), NO-OP spans are returned:

NoOpSpan
Direct link to noopspan

class NoOpSpan<TType extends SpanType> extends BaseSpan<TType>

A span that performs no operations. All methods are no-ops:

  • id returns 'no-op'
  • traceId returns 'no-op-trace'
  • isValid returns false
  • end(), error(), update() do nothing
  • createChildSpan() returns another NO-OP span

See also
Direct link to See also

Documentation
Direct link to Documentation

Reference
Direct link to Reference