Serverless
Analytics

Analytics

Time-bucketed metrics for your serverless app endpoints, including request counts, success/error rates, and latency percentiles across all inbound traffic. prepare_duration reflects queue/prepare time before execution; duration is request execution time.

This endpoint shows all inbound requests to endpoints you own — not just your own calls. This is ideal for monitoring your deployed apps, tracking SLAs, and exporting data to tools like BigQuery or Grafana. You must own all requested endpoints; returns 403 otherwise.

A bare app id ('<owner>/<name>') automatically includes the app's registered route-level endpoints (e.g. '<owner>/<name>/turbo'); results stay grouped by the route-level id they were recorded under. Pass a route-level id to filter to that route exactly.

Metric Selection: You must specify which metrics to include using the expand query parameter. Only requested metrics will be populated in the response, allowing you to optimize query performance and data transfer.

Available Metrics:

The expand parameter accepts these values, grouped by category:

Volume

  • request_count: Total number of requests in the time bucket
  • success_count: Successful requests (2xx responses)
  • user_error_count: User errors (4xx responses)
  • error_count: Server errors (5xx responses)

Error type breakdown

  • startup_error_count: Startup errors (startup timeout, scheduling failure)
  • connection_error_count: Connection errors (timeout, disconnected, refused)
  • timeout_error_count: Request timeout errors
  • runtime_error_count: Runtime errors (internal error, server error)

Queue / prepare latency

  • p50_prepare_duration, p75_prepare_duration, p90_prepare_duration, p95_prepare_duration, p99_prepare_duration: Time from request submission until execution starts

Request execution latency

  • p25_duration, p50_duration, p75_duration, p90_duration, p95_duration, p99_duration: Time spent processing the request

Cold boot

  • cold_boot_count: Requests with cold boot (startup > 1s)
  • p50_cold_boot_duration, p75_cold_boot_duration, p90_cold_boot_duration: Cold boot duration percentiles

Billing

  • total_billable_duration: Aggregate billed execution time

Key Features:

  • See all traffic to your apps across all callers
  • Selective metric inclusion via expand parameter
  • Performance metrics (latency percentiles, duration stats)
  • Reliability metrics (success/error rates, request counts)
  • Error type breakdown (startup, connection, timeout, runtime)
  • Cold boot metrics (count, latency percentiles)
  • Billing duration tracking
  • Time-bucketed data for trend analysis
  • Flexible date range and timeframe options

Common Use Cases:

  • Monitor your serverless app performance and reliability
  • Export analytics to your own observability tools
  • Analyze latency trends across all callers
  • Track error rates and SLA compliance
get/serverless/analytics

Query parameters

limitinteger

Maximum number of items to return. Actual maximum depends on query type and expansion parameters.

Example:50

Maximum number of items to return. Actual maximum depends on query type and expansion parameters.

cursorstring

Pagination cursor from previous response. Encodes the page number.

Example:Mg==

Pagination cursor from previous response. Encodes the page number.

string date-time
OR
string

Start date in ISO8601 format (e.g., '2025-01-01T00:00:00Z' or '2025-01-01'). Defaults to 24 hours ago.

string date-time
OR
string

End date in ISO8601 format, exclusive (e.g., '2025-02-01T00:00:00Z' or '2025-02-01'). Data up to but not including this timestamp is returned. Defaults to current time.

timezonestring

Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.

Example:UTC

Timezone for date aggregation and boundaries. All timestamps in responses are in UTC, but this controls how dates are bucketed.

timeframe'minute' | 'hour' | 'day' | 'week' | 'month'

Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).

Example:day

Aggregation timeframe for timeseries data (auto-detected from date range if not specified). Auto-detection uses: minute (<2h), hour (<2d), day (<64d), week (<183d), month (>=183d).

bound_to_timeframe'true' | 'false'

Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.

Example:true

Whether to adjust start/end dates to align with timeframe boundaries and use exclusive end. Defaults to true. When true, dates are aligned to the start of the timeframe period (e.g., start of day) and end is made exclusive (e.g., start of next day). When false, uses exact dates provided.

string required
OR
string[] required

Filter by specific endpoint ID(s). Accepts 1-50 endpoint IDs. Supports comma-separated values: ?endpoint_id=model1,model2 or array syntax: ?endpoint_id=model1&endpoint_id=model2

string
OR
string[]

Data and metrics to include in the response. Use 'time_series' for time-bucketed data, metric names for specific metrics in time series, and 'summary' for aggregate statistics. At least one of 'time_series' or 'summary' and at least one metric are required.

Response

Analytics data retrieved successfully

next_cursorstring nullable required

Cursor for the next page of results, null if no more pages

has_moreboolean required

Boolean indicating if more results are available (convenience field derived from next_cursor)

Changes

No recorded changes to this endpoint across all 2 revisions of this API.