본문으로 건너뛰기
runlot

observability

Covers 95 API operations in the observability category.

MethodPathDescription
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/capabilitiesWhether the event store exists and which observability features work
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/queryRun a query over invocations, log events or spans
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/keysField names seen in a window, with their types (facets)
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/valuesThe top 20 values of one key in a window
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/patternsLog lines clustered by template, with counts, first seen and trend
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/requests/{requestId}One request — its record, log events, spans, error events and links
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queriesSaved queries of this project and the org-wide ones
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queriesSave a query (member or higher)
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}One saved query
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}Replace a saved query's name, description, tags and body (member or higher)
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}Delete a saved query (member or higher)
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}/starStar a saved query for yourself
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}/starRemove your star
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/pipelineThe log pipeline applied at ingest
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/pipelineReplace the log pipeline (admin)
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/scannerThe sensitive data scanner
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/scannerReplace the sensitive data scanner (admin)
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/scanner/testRun a scanner over a sample string; nothing is stored
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/logs-configThe whole ingest configuration as .runlot/logs.json
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/log-metricsLog-to-metrics definitions
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/log-metrics/{name}Create or replace a log-to-metrics definition (admin)
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/observability/log-metrics/{name}Delete a log-to-metrics definition (admin)
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboardsList dashboards
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboardsCreate a dashboard
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}Get a dashboard
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}Replace a dashboard
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}Delete a dashboard
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/exportExport a dashboard as code
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/shareMake a public read-only link
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/shareRevoke the public link
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/widgets/{widgetId}/dataRead one widget's data
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboard-settingsGet the public-link switch
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboard-settingsTurn public dashboard links on or off
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/markersDeploy and OOM markers
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/insightsList Watchdog insights
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/insights/{insightId}/resolveResolve an insight
GET/v1/orgs/{orgSlug}/projects/{projectName}/syntheticsList synthetic checks
PUT/v1/orgs/{orgSlug}/projects/{projectName}/synthetics/{checkId}Create or replace a synthetic check
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/synthetics/{checkId}Delete a synthetic check
GET/v1/orgs/{orgSlug}/projects/{projectName}/synthetics/{checkId}/runsList a synthetic check's runs
GET/v1/shared/dashboards/{token}Read a public dashboard
POST/v1/shared/dashboards/{token}/widgets/{widgetId}/dataRead one widget of a public dashboard
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/overviewRequests, errors, status classes and wall-time quantiles
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/memoryMemory against its limit, per role
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/infrastructureCPU, pressure, I/O, exits, wakes and Durable Objects
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/customOne custom metric's series
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/custom/namesCustom metric names and this month's series meter
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/routesRoute templates and where they came from
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/routesPin, reject or release a learned route template
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/routesRED per route and handler
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/routes/{route}/breakdownA route's wall time by span kind
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/service-mapThe project's service map
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/compareTwo deployment versions side by side
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/tracesThe trace explorer
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/overviewRUM overview
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/pagesRUM by page template
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/devicesRUM by device class
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/viewsRUM page views
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/views/{viewId}One RUM page view
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/traces/{traceId}One trace's waterfall
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filtersTrace retention filters
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filtersAdd a trace retention filter
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filters/{filterId}Replace a trace retention filter
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filters/{filterId}Remove a trace retention filter
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/database/queriesenv.db statement fingerprints
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/database/queries/{fingerprint}One fingerprint's sample statement and hourly series
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/database/healthDatabase size, tables, indexes and deferred HNSW tombstones
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/profilerGet the continuous profiler switch
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/profilerTurn the continuous profiler on or off
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/samplingGet the sampling override
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/samplingSet the sampling override
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/profilesList profiling windows
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/nearProfiling windows within a minute of an instant
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/flamegraphMerged flame graph
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/topTop functions by self time
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/compareCompare two versions' profiles
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/heap-snapshotsList heap snapshots
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/heap-snapshotsTake a heap snapshot
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/heap-snapshots/{snapshotId}Download a heap snapshot
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/permissionsMy observability permissions on this project
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/rolesEvery member's observability grants on this project
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/roles/{userId}Replace one member's observability grants on this project
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/observability/roles/{userId}Return one member to their role's default grants
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/auditThe project's observability audit trail
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/dataWhere the project's observability data is kept and where it is exported
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/capsEvery observability meter's cap, use and projected cost
PUT/v1/orgs/{orgSlug}/projects/{projectName}/observability/capsRaise, lower or remove an observability cap
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/exportsThe project's export destinations (OTLP, Logpush)
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/exportsAdd an export destination
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/exports/{exportId}One export destination with its delivery state
PATCH/v1/orgs/{orgSlug}/projects/{projectName}/observability/exports/{exportId}Change an export destination
DELETE/v1/orgs/{orgSlug}/projects/{projectName}/observability/exports/{exportId}Remove an export destination
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/rehydrationsThe project's rehydration jobs
POST/v1/orgs/{orgSlug}/projects/{projectName}/observability/rehydrationsLoad an archived range back into the store for seven days
GET/v1/orgs/{orgSlug}/projects/{projectName}/observability/rehydrations/{jobId}One rehydration job

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/capabilities

store is false where the control plane has no event store (self-hosted without ClickHouse). Then every read below answers { "available": false }; the live tail, pipelines and the scanner still work. Viewer or higher.

operationId getObservabilityCapabilities

Status codeDescriptionResponse body
200Capability flagObsCapabilities
403——
404——

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/query

A query is JSON, compiled into parameterised SQL; there is no raw SQL. Built-in keys start with $ ($request.path, $response.status, $wall_ms, $outcome, $level, $message, $span.name, $duration_ms, …); bare keys are your own fields. $cpu_ms (an invocation's JavaScript CPU) is joined from its CPU reading and is null where none was measured; it cannot be used by pipelines or log metrics, which run at ingest. Filters AND together. The timeframe is clamped to your plan's retention (clamped says so). At most 1,000 rows, 20 filters, 10 calculations and 5 groupBy keys; a query runs for at most 10 seconds. Counts over log events are weighted, so they stay estimates of the real volume past the daily cap. Viewer or higher.

operationId queryObservability

Request body: application/json · ObsQuery

Status codeDescriptionResponse body
200Result, or { "available": false } without an event storeObsQueryResult
400——
403——
404——
422The query ran too long or needed too much memory. code is query_too_slow or query_too_largeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/keys

Field names seen in a window, with their types (facets)

operationId listObservabilityKeys

ParameterLocationRequiredTypeDescription
sincequeryNostring—
untilqueryNostring—
viewqueryNostring—
Status codeDescriptionResponse body
200Built-in keys and the user keys seen in the newest 10,000 rows of the windowObsKeys
400——
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/values

The top 20 values of one key in a window

operationId listObservabilityValues

ParameterLocationRequiredTypeDescription
keyqueryYesstring—
sincequeryNostring—
untilqueryNostring—
viewqueryNostring—
Status codeDescriptionResponse body
200Values with countsObsValues
400——
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/patterns

Log lines clustered by template, with counts, first seen and trend

operationId listObservabilityPatterns

ParameterLocationRequiredTypeDescription
sincequeryNostring—
untilqueryNostring—
levelqueryNostring—
Status codeDescriptionResponse body
200Up to 100 patterns, largest firstObsPatterns
400——
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/requests/{requestId}

The request ID is the runlot-request-id header and the trace ID. A record whose process died (workerExited) shows the cause the process exit explains: exceededMemory when the project's own memory limit killed it, internalError with the signal otherwise. Viewer or higher.

operationId getObservabilityRequest

Status codeDescriptionResponse body
200The request viewObsRequestView
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries

Saved queries of this project and the org-wide ones

operationId listSavedQueries

Status codeDescriptionResponse body
200Saved queries, newest first, with your starsSavedQueryList
403——
404——

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries

The body is validated by the same compiler that runs it. scope: org makes it visible from every project of the org. Free keeps 10 per project (and 10 org-wide); Pro has no limit — past it the answer is 403 plan_limit.

operationId createSavedQuery

Request body: application/json · SavedQueryInput

Status codeDescriptionResponse body
201SavedSavedQuery
400——
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}

One saved query

operationId getSavedQuery

Status codeDescriptionResponse body
200The saved querySavedQuery
403——
404——

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}

Replace a saved query's name, description, tags and body (member or higher)

operationId updateSavedQuery

Request body: application/json · SavedQueryInput

Status codeDescriptionResponse body
200UpdatedSavedQuery
400——
403——
404——

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}

Delete a saved query (member or higher)

operationId deleteSavedQuery

Status codeDescriptionResponse body
204Deleted—
403——
404——

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}/star

Star a saved query for yourself

operationId starSavedQuery

Status codeDescriptionResponse body
200The saved querySavedQuery
403——
404——

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}/star

Remove your star

operationId unstarSavedQuery

Status codeDescriptionResponse body
200The saved querySavedQuery
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/pipeline

source is default (JSON parse only), dashboard, or repo (from .runlot/logs.json, applied when its deployment went live).

operationId getObservabilityPipeline

Status codeDescriptionResponse body
200The pipelineObsPipeline
403——
404——

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/pipeline

Processors run in order at ingest, before storage and export: json_parse, kv, regex (RE2 with named groups), rename, level, url, user_agent, drop and sample. At most 32. A dashboard edit stands until the next deploy that carries a repository config.

operationId putObservabilityPipeline

Request body: application/json · object

Status codeDescriptionResponse body
200The pipeline now in forceObsPipeline
400——
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/scanner

A built-in rule absent from builtins redacts. The same scanner runs over error events.

operationId getObservabilityScanner

Status codeDescriptionResponse body
200The scannerObsScanner
403——
404——

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/scanner

Replace the sensitive data scanner (admin)

operationId putObservabilityScanner

Request body: application/json · ObsScannerConfig

Status codeDescriptionResponse body
200The scanner now in forceObsScanner
400——
403——
404——

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/scanner/test

Run a scanner over a sample string; nothing is stored

operationId testObservabilityScanner

Request body: application/json · object

Status codeDescriptionResponse body
200The sample after the scannerObsScanResult
400——
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/logs-config

Commit it as .runlot/logs.json (the CLI places it in the manifest's observability.logs) to keep the configuration with the code.

operationId exportObservabilityLogsConfig

Status codeDescriptionResponse body
200The configuration documentObsLogsConfig
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/log-metrics

Log-to-metrics definitions

operationId listObservabilityLogMetrics

Status codeDescriptionResponse body
200Definitions and the per-project limitobject
403——
404——

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/log-metrics/{name}

Computed at ingest before sampling and before the daily cap, so the metric stays exact while stored logs are sampled. Emitted as the custom metric log.<name>; each groupBy key becomes a tag. At most 50 per project.

operationId putObservabilityLogMetric

Request body: application/json · ObsLogMetric

Status codeDescriptionResponse body
200The definitionObsLogMetric
400——
403——
404——

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/log-metrics/{name}

Delete a log-to-metrics definition (admin)

operationId deleteObservabilityLogMetric

Status codeDescriptionResponse body
204Deleted—
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards

The built-in dashboards (Overview, APM, Database, Infrastructure, Errors, Crons and one per Durable Object class; defined by the platform and read-only) and the project's custom dashboards. Viewer.

operationId listDashboards

Status codeDescriptionResponse body
200DashboardsDashboardList
401Request refused—
403Request refused—
404Request refused—

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards

Every widget is a §7 query, a metric query, or a reference (issues, an SLO, monitors, the service map, markdown). Unknown fields are refused anywhere in the body, so no field can carry SQL. At most 50 widgets and 64 KiB. Free allows 3 custom dashboards per project (403 plan_required past it); Pro is unlimited. key may be omitted. Member.

operationId createDashboard

Request body: application/json · DashboardInput

Status codeDescriptionResponse body
201The stored dashboardDashboard
400Request refused—
401Request refused—
403Request refused, or the plan's dashboard limit is reached—
404Request refused—
409Another dashboard of the project has the key—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}

One dashboard with its widgets. url is the member share link. Viewer.

operationId getDashboard

Status codeDescriptionResponse body
200The dashboardDashboard
401Request refused—
403Request refused—
404Request refused—

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}

Built-ins (409 dashboard_builtin) and dashboards from .runlot/dashboards/ (409 dashboard_managed_by_repo) are read-only here. Member.

operationId putDashboard

Request body: application/json · DashboardInput

Status codeDescriptionResponse body
200The stored dashboardDashboard
400Request refused—
401Request refused—
403Request refused—
404Request refused—
409Read-only, or the key is taken—

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}

Member. A repository dashboard is removed by deleting its file and deploying.

operationId deleteDashboard

Status codeDescriptionResponse body
204Deleted—
401Request refused—
403Request refused—
404Request refused—
409The dashboard comes from the repository—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/export

The JSON a .runlot/dashboards/<key>.json file holds, and a valid create body (a built-in exports with the key custom-<key>). Viewer.

operationId exportDashboard

Status codeDescriptionResponse body
200The dashboard as codeDashboardInput
401Request refused—
403Request refused—
404Request refused—

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/share

Returns a new token (shown once; stored hashed) and replaces any previous one. The link answers only while the project's publicDashboards switch is on and public is true. Raw rows (log streams, issue lists, event tables) are never served through it. Admin.

operationId shareDashboard

Request body: application/json · object

Status codeDescriptionResponse body
200The link tokenDashboardShare
401Request refused—
403Request refused—
404Request refused—
409Built-in dashboards cannot be shared publicly—

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/share

Admin.

operationId unshareDashboard

Status codeDescriptionResponse body
204Revoked—
401Request refused—
403Request refused—
404Request refused—

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/widgets/{widgetId}/data

Runs the stored widget with the given range (default the last hour, at most 31 days, clamped to the plan's metric retention) and the dashboard's declared variables. 501 not_available for a source whose engine is not on this installation. Viewer.

operationId getDashboardWidgetData

Request body: application/json · WidgetDataRequest

Status codeDescriptionResponse body
200The widget's dataWidgetData
400Request refused—
401Request refused—
403Request refused—
404Request refused—
501The widget's source is not available on this installation—
503The observability store is not configured—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboard-settings

Viewer.

operationId getDashboardSettings

Status codeDescriptionResponse body
200SettingsDashboardSettings
401Request refused—
403Request refused—
404Request refused—

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboard-settings

Off by default. While off, every public link of the project answers 404. Admin.

operationId putDashboardSettings

Request body: application/json · DashboardSettings

Status codeDescriptionResponse body
200SettingsDashboardSettings
400Request refused—
401Request refused—
403Request refused—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/markers

Live switches and out-of-memory exits in the range, for drawing on every time series. Viewer.

operationId getObservabilityMarkers

Status codeDescriptionResponse body
200MarkersMarkerList
400Request refused—
401Request refused—
403Request refused—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/insights

What Watchdog noticed with no monitor configured: deploy regressions (every plan) and, on Pro, seasonal anomalies and new log patterns, each with root-cause hints and, when it began at a deploy, the deployment comparison. Viewer.

operationId listInsights

Status codeDescriptionResponse body
200InsightsInsightList
400Request refused—
401Request refused—
403Request refused—
404Request refused—

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/insights/{insightId}/resolve

Member.

operationId resolveInsight

Status codeDescriptionResponse body
204Resolved—
401Request refused—
403Request refused—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/synthetics

The uptime checks under their observability name; the same checks and answers as …/uptime-checks. Viewer.

operationId listSynthetics

Status codeDescriptionResponse body
200ChecksUptimeCheckList
401Request refused—
403Request refused—
404Request refused—

PUT /v1/orgs/{orgSlug}/projects/{projectName}/synthetics/{checkId}

As PUT …/uptime-checks/{checkId}, including multi-step API checks. Admin.

operationId putSynthetic

Request body: application/json · UptimeCheckInput

Status codeDescriptionResponse body
200The stored checkUptimeCheck
400Request refused—
401Request refused—
402The plan's check limit is reached—
403Request refused, or the interval is below the plan's—
404Request refused—
409The check ID belongs to another project—

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/synthetics/{checkId}

Admin.

operationId deleteSynthetic

Status codeDescriptionResponse body
204Deleted—
401Request refused—
403Request refused—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/synthetics/{checkId}/runs

Newest first, the last seven days. Viewer.

operationId listSyntheticRuns

Status codeDescriptionResponse body
200RunsUptimeRunList
401Request refused—
403Request refused—
404Request refused—

GET /v1/shared/dashboards/{token}

No credential: the token is the link. 404 unless the project's public links are on and the dashboard is public. Rate-limited per address and per token (429 with Retry-After).

operationId getSharedDashboard

Status codeDescriptionResponse body
200The dashboard's layoutSharedDashboard
404No such public dashboard—
429Too many requests—

POST /v1/shared/dashboards/{token}/widgets/{widgetId}/data

Only the range and the dashboard's declared variables come from the caller; the query is the stored widget's. Raw rows are refused with 403 not_shared.

operationId getSharedDashboardWidgetData

Request body: application/json · WidgetDataRequest

Status codeDescriptionResponse body
200The widget's dataWidgetData
400Request refused—
403The widget shows raw rows—
404No such public dashboard or widget—
429Too many requests—
501The widget's source is not available on this installation—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/overview

Viewer and project:read. Quantiles are merged from per-minute (ranges inside 15 days) or hourly t-digest sketches, never averaged. Deploy and out-of-memory markers in range. Synthetic traffic is excluded by default. groupBy=version splits by deployment version. 503 no_event_store without ClickHouse.

operationId getObsMetricsOverview

ParameterLocationRequiredTypeDescription
fromqueryNostringDefault 24 hours ago; clamped to the plan's retention.
toqueryNostringDefault now.
stepqueryNostringBucket width: seconds or a duration such as 5m. Chosen from the range when omitted.
versionqueryNointeger—
handlerqueryNostringfetch, scheduled, queue, email, alarm, rpc, websocket
routequeryNostring—
syntheticqueryNostring—
groupByqueryNostring—
Status codeDescriptionResponse body
200OKObsMetricsOverview
400——
403——
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/memory

Viewer. 10-second samples inside the last 24 h (ranges up to 6 h), per-minute inside 15 days, hourly beyond. memory.high throttle events are marked throttled; OOM and deploy markers.

operationId getObsMetricsMemory

ParameterLocationRequiredTypeDescription
fromqueryNostringDefault 24 hours ago; clamped to the plan's retention.
toqueryNostringDefault now.
stepqueryNostringBucket width: seconds or a duration such as 5m. Chosen from the range when omitted.
Status codeDescriptionResponse body
200OKObsMetricsMemory
400——
403——
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/infrastructure

Viewer. Per role in split mode. Wakes and cold starts come from the invocation records, so they reach back only as far as the plan keeps them.

operationId getObsMetricsInfrastructure

ParameterLocationRequiredTypeDescription
fromqueryNostringDefault 24 hours ago; clamped to the plan's retention.
toqueryNostringDefault now.
stepqueryNostringBucket width: seconds or a duration such as 5m. Chosen from the range when omitted.
Status codeDescriptionResponse body
200OKObsMetricsInfrastructure
400——
403——
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/custom

Viewer. agg is count, sum, min, max, avg, last or a quantile (p50 to p999, merged from sketches). tags=k:v,k2:v2 filters; groupBy splits by a tag (at most 50 groups, largest first).

operationId getObsMetricsCustom

ParameterLocationRequiredTypeDescription
fromqueryNostringDefault 24 hours ago; clamped to the plan's retention.
toqueryNostringDefault now.
stepqueryNostringBucket width: seconds or a duration such as 5m. Chosen from the range when omitted.
namequeryYesstring—
aggqueryNostring—
tagsqueryNostring—
groupByqueryNostring—
Status codeDescriptionResponse body
200OKObsCustomMetric
400——
403——
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/custom/names

Viewer. usage.refused counts new series the cardinality bound refused this month.

operationId getObsMetricsCustomNames

Status codeDescriptionResponse body
200OKObsCustomNames
400——
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/routes

Viewer. The live deployment's framework and declared template sets with their coverage, and the learned templates (segment rule or folded), pinned or rejected.

operationId listObsRoutes

Status codeDescriptionResponse body
200OKObsRoutes
403——
404——

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/routes

Member. A pinned template is always applied; a rejected one never is (for a folded template, the position is not folded again). It changes only how this project's own data is grouped.

operationId putObsRoute

Request body: application/json · ObsRouteStateInput

Status codeDescriptionResponse body
200OKObsLearnedRoute
400——
403——
409——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/routes

Viewer. Free lists the top routes only (limit), with no breakdown, service map or comparison.

operationId getObsAPMRoutes

ParameterLocationRequiredTypeDescription
fromqueryNostringDefault 24 hours ago; clamped to the plan's retention.
toqueryNostringDefault now.
stepqueryNostringBucket width: seconds or a duration such as 5m. Chosen from the range when omitted.
versionqueryNointeger—
handlerqueryNostringfetch, scheduled, queue, email, alarm, rpc, websocket
routequeryNostring—
syntheticqueryNostring—
Status codeDescriptionResponse body
200OKObsAPMRoutes
400——
403——
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/routes/{route}/breakdown

Viewer, Pro. Own code is wall time minus span time; spans that overlap are shown as shares of span time (overlapping). The basis is the sampled invocations inside the plan's raw retention.

operationId getObsAPMBreakdown

ParameterLocationRequiredTypeDescription
fromqueryNostringDefault 24 hours ago; clamped to the plan's retention.
toqueryNostringDefault now.
stepqueryNostringBucket width: seconds or a duration such as 5m. Chosen from the range when omitted.
versionqueryNointeger—
Status codeDescriptionResponse body
200OKObsBreakdown
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/service-map

Viewer, Pro. Nodes are the project, its bindings, Durable Object classes, other projects reached through service bindings and external hosts; edges carry rate, error rate and p95. Drawn from spans.

operationId getObsAPMServiceMap

ParameterLocationRequiredTypeDescription
fromqueryNostringDefault 24 hours ago; clamped to the plan's retention.
toqueryNostringDefault now.
stepqueryNostringBucket width: seconds or a duration such as 5m. Chosen from the range when omitted.
versionqueryNointeger—
Status codeDescriptionResponse body
200OKObsServiceMap
400——
403——
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/compare

Viewer, Pro. RED per route, the breakdown, memory peak while each was newest, and error groups first seen in b. Default range is the last 15 days.

operationId getObsAPMCompare

ParameterLocationRequiredTypeDescription
fromqueryNostringDefault 24 hours ago; clamped to the plan's retention.
toqueryNostringDefault now.
stepqueryNostringBucket width: seconds or a duration such as 5m. Chosen from the range when omitted.
aqueryYesinteger—
bqueryYesinteger—
Status codeDescriptionResponse body
200OKObsCompare
400——
403——
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/traces

Viewer. Both tiers: sampled invocations inside the plan's retention, and long-kept traces (errors, the slowest 1 % of their route, retention filters) for 30 days on Pro. Newest first, 50 a page; pass next back as before.

operationId listObsAPMTraces

ParameterLocationRequiredTypeDescription
fromqueryNostring—
toqueryNostring—
beforequeryNostringUnix milliseconds, from the previous page's next.
routequeryNostring—
statusqueryNostringA code (502) or a class (5xx).
minDurationqueryNonumber—
hasErrorqueryNoboolean—
versionqueryNointeger—
Status codeDescriptionResponse body
200OKObsTraceList
400——
403——
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/overview

Viewer, Pro. Page views, sessions and p75 Web Vitals (LCP, INP, CLS, TTFB) over time from the browser agent (§17.12), plus this month's metered and refused (past the RUM session cap) sessions. Every value is a claim from the visitor's browser.

operationId getObsRUMOverview

ParameterLocationRequiredTypeDescription
fromqueryNostring—
toqueryNostring—
stepqueryNostringSeconds or a duration such as 5m.
templatequeryNostringOne page template, such as /users/:id.
devicequeryNostring—
Status codeDescriptionResponse body
200OKObsRUMOverview
400——
403plan_required: real user monitoring is a Pro featureError
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/pages

Viewer, Pro. Page templates (paths with ids folded to :id, no query) by page views, with p75 vitals, long tasks and resource and fetch timing summaries by initiator kind and first- or third-party host. At most 500.

operationId listObsRUMPages

ParameterLocationRequiredTypeDescription
fromqueryNostring—
toqueryNostring—
stepqueryNostringSeconds or a duration such as 5m.
templatequeryNostringOne page template, such as /users/:id.
devicequeryNostring—
sortqueryNostring—
Status codeDescriptionResponse body
200OKObsRUMPages
400——
403plan_required: real user monitoring is a Pro featureError
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/devices

Viewer, Pro. The same aggregates per device class (mobile, tablet, desktop: from the viewport and the pointer, never a user agent).

operationId listObsRUMDevices

ParameterLocationRequiredTypeDescription
fromqueryNostring—
toqueryNostring—
stepqueryNostringSeconds or a duration such as 5m.
templatequeryNostringOne page template, such as /users/:id.
devicequeryNostring—
Status codeDescriptionResponse body
200OKObsRUMDevices
400——
403plan_required: real user monitoring is a Pro featureError
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/views

Viewer, Pro. Page views newest first (or slowest LCP first), inside the plan's event retention. A document view names serverRequestId, the request that rendered the page (its trace ID).

operationId listObsRUMViews

ParameterLocationRequiredTypeDescription
fromqueryNostring—
toqueryNostring—
stepqueryNostringSeconds or a duration such as 5m.
templatequeryNostringOne page template, such as /users/:id.
devicequeryNostring—
sessionqueryNostring—
sortqueryNostring—
limitqueryNointeger—
Status codeDescriptionResponse body
200OKObsRUMViewList
400——
403plan_required: real user monitoring is a Pro featureError
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/views/{viewId}

Viewer, Pro. One page view with its timing summaries and the server requests it caused: the document's rendering request, and the requests whose traceparent named the view as parent (§11). Correlation from browser claims, not proof.

operationId getObsRUMView

Status codeDescriptionResponse body
200OKObsRUMView
400——
403plan_required: real user monitoring is a Pro featureError
404——
503no_event_store: this control plane has no event storeError

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/traces/{traceId}

Viewer. Spans with depth and offset, the invocation that started the trace while it is kept, and its log events.

operationId getObsAPMTrace

Status codeDescriptionResponse body
200OKObsTrace
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filters

Viewer. A trace matching an enabled filter is kept for the long retention (30 days, Pro).

operationId listObsTraceFilters

Status codeDescriptionResponse body
200OKObsTraceFilterList
403——

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filters

Admin, Pro. At most 20 per project. Long-kept bytes past the normal retention are billed as GB-months.

operationId createObsTraceFilter

Request body: application/json · ObsTraceFilterInput

Status codeDescriptionResponse body
201CreatedObsTraceFilter
400——
403——
409——

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filters/{filterId}

Admin, Pro.

operationId updateObsTraceFilter

Request body: application/json · ObsTraceFilterInput

Status codeDescriptionResponse body
200OKObsTraceFilter
400——
403——
404——

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filters/{filterId}

Admin.

operationId deleteObsTraceFilter

Status codeDescriptionResponse body
204Removed—
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/database/queries

Viewer. Per fingerprint: calls, total and mean time, bucketed p95/p99, errors by SQLSTATE and the routes that issued it, from the statement histograms (48 hours). waits is absent until spans carry db.wait_ms; plans is not available on the deployed engine yet.

operationId listObsDBQueries

ParameterLocationRequiredTypeDescription
fromqueryNostringClamped to the last 48 hours.
toqueryNostring—
Status codeDescriptionResponse body
200OKObsDBQueries
400——
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/database/queries/{fingerprint}

Viewer. The sample is the normalised, scrubbed shape; literals never reach the CP.

operationId getObsDBQuery

ParameterLocationRequiredTypeDescription
fromqueryNostringClamped to the last 48 hours.
toqueryNostring—
Status codeDescriptionResponse body
200OKObsDBQuery
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/database/health

Member and db:read. Fixed read-only catalog statements over the console's wire path, never customer SQL; a statement the engine does not answer is reported in errors. Size history from hourly usage.

operationId getObsDBHealth

Status codeDescriptionResponse body
200OKObsDBHealth
400——
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiler

Whether the project's next generation launches profiled, the stored setting (null is the default) and whether the plan allows it (Pro). Viewer.

operationId getObsProfilerSettings

Status codeDescriptionResponse body
200SettingsObsProfilerSettings
401Request refused—
403Request refused—
404Request refused—

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiler

Takes effect with the next deployment or restart of the app: the profiler attaches through an inspector the process is launched with, and nothing restarts it to add or remove one. null returns to the default. Turning it on needs Pro (403 plan_required). Admin.

operationId putObsProfilerSettings

Request body: application/json · ObsProfilerSettingsInput

Status codeDescriptionResponse body
200SettingsObsProfilerSettings
400Request refused—
401Request refused—
403Request refused, or plan_required—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/sampling

The dashboard's override of the live deployment's observability.logs / observability.traces sampling. Each null field is the manifest's. Viewer.

operationId getObsSampling

Status codeDescriptionResponse body
200OverrideObsSampling
401Request refused—
403Request refused—
404Request refused—

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/sampling

Replaces all four fields; an absent or null field hands it back to the manifest. Requests take it at the next map refresh; scheduled, queue, email and alarm invocations take it from the app's next start. Admin.

operationId putObsSampling

Request body: application/json · ObsSampling

Status codeDescriptionResponse body
200OverrideObsSampling
400Request refused—
401Request refused—
403Request refused—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles

Each stored ten-second CPU profile window, newest first. Profiles are kept twice the plan's event retention. Viewer.

operationId listObsProfiles

Status codeDescriptionResponse body
200WindowsObsProfileList
400Request refused—
401Request refused—
403Request refused—
404Request refused—
503This control plane keeps no event store—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/near

The windows that started within one minute either side of ts — the profile linked from a slow trace of the same minute. Viewer.

operationId nearObsProfiles

Status codeDescriptionResponse body
200WindowsObsProfileList
400Request refused—
401Request refused—
403Request refused—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/flamegraph

The window's folded stacks merged into one tree under all. Frames are symbolicated with the deployment's source maps as function (source:line:col) [module:line:col], the raw frame in brackets. Bounded to 128 levels, 64 children per node and 5,000 nodes; what does not fit is an (other) child, so totals still add up. Viewer.

operationId getObsFlamegraph

Status codeDescriptionResponse body
200Flame graphObsFlamegraph
400Request refused—
401Request refused—
403Request refused—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/top

Functions (a frame without its line and column, so one function's lines add up) by samples whose leaf they were, with their inclusive samples and share of the window. Viewer.

operationId getObsProfileTop

Status codeDescriptionResponse body
200FunctionsObsProfileTop
400Request refused—
401Request refused—
403Request refused—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/compare

Each function's share of self time in version a and version b, largest change first (at most 200). Shares rather than samples, because two versions are never profiled for the same number of windows. Viewer.

operationId compareObsProfiles

Status codeDescriptionResponse body
200ComparisonObsProfileCompare
400Request refused—
401Request refused—
403Request refused—
404Request refused—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/heap-snapshots

The project's snapshots, newest first (at most 50). Admin.

operationId listObsHeapSnapshots

Status codeDescriptionResponse body
200SnapshotsObsHeapSnapshotList
401Request refused—
403Request refused—
404Request refused—

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/heap-snapshots

Starts one V8 heap snapshot of the running app and answers at once with its ID; poll the list until it is ready. A snapshot pauses the app while it is taken and holds whatever the app held in memory, secrets included, so it is admin and audit-logged, one at a time and at most one every 10 minutes (429 with Retry-After), and it expires after 7 days. Needs Pro (403 plan_required) and the profiler on for the running version (409 inspector_unavailable).

operationId createObsHeapSnapshot

Status codeDescriptionResponse body
202StartedObsHeapSnapshot
401Request refused—
403Request refused, or plan_required—
404Request refused—
409inspector_unavailable, heap_snapshot_running or not_running—
429rate_limited—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/heap-snapshots/{snapshotId}

A ready snapshot as a Chrome DevTools .heapsnapshot file. 409 heap_snapshot_not_ready while it is being taken, heap_snapshot_failed with the reason when it failed. Admin; each download is audit-logged.

operationId downloadObsHeapSnapshot

Status codeDescriptionResponse body
200The snapshotstring
401Request refused—
403Request refused—
404Request refused—
409heap_snapshot_not_ready or heap_snapshot_failed—

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/permissions

The caller's grants from their organization role (viewer and member: observability:read; admin: read, pii and admin) or the project's override for them, and effective, the grants this credential can use once its token scopes narrow them.

operationId getObservabilityPermissions

Status codeDescriptionResponse body
200The grantsObservabilityPermissions
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/roles

Needs observability:admin on the project.

operationId listObservabilityRoles

Status codeDescriptionResponse body
200Members with their default and effective grantsobject
403——
404——

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/roles/{userId}

The override replaces the organization role's default for this person on this project, wider or narrower. observability:pii and observability:admin need observability:read beside them; [] grants nothing. You cannot remove your own observability:admin (409 self_lockout). Audited.

operationId putObservabilityRole

Request body: application/json · object

Status codeDescriptionResponse body
200The overrideobject
400——
403——
404——
409——

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/roles/{userId}

Return one member to their role's default grants

operationId deleteObservabilityRole

Status codeDescriptionResponse body
204Reset—
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/audit

Configuration changes (caps, exports, rehydration, role overrides, and the pipelines, scanners and monitors that record here) and reads of PII-scoped data, newest first. Reads by Runlot operators (through a bug report or the operations console) appear with actorKind: operator. Needs observability:admin.

operationId listObservabilityAudit

ParameterLocationRequiredTypeDescription
limitqueryNointeger—
beforequeryNostringAn auditId; returns older entries
Status codeDescriptionResponse body
200A page of the trailobject
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/data

Where the project's observability data is kept and where it is exported

operationId getObservabilityData

Status codeDescriptionResponse body
200The data pageObservabilityData
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/caps

Every observability meter's cap, use and projected cost

operationId getObservabilityCaps

Status codeDescriptionResponse body
200The capsObservabilityCaps
403——
404——

PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/caps

Each meter takes a number, -1 (no cap) or null (the plan's included amount); a meter left out is unchanged. Every cap is on by default at the included amount. Any plan may lower one; raising or removing one needs Pro (403 plan_required), and usage past the included amount is billed within the organization's spending limit. The answer carries the projected month's cost at the current rate. Needs the admin role and observability:admin. Audited.

operationId putObservabilityCaps

Request body: application/json · ObservabilityCapsUpdate

Status codeDescriptionResponse body
200The caps after the changeObservabilityCaps
400——
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/exports

The project's export destinations (OTLP, Logpush)

operationId listObservabilityExports

Status codeDescriptionResponse body
200Destinations, with no secret valuesobject
403——
404——

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/exports

otlp: OTLP/HTTP JSON to an HTTPS collector on port 443 or 4318 at a public address, with optional headers (sealed; only their names are ever shown again). Signals logs, traces, metrics. persist: false exports logs and traces without storing them, unless another destination of the project keeps them. logpush: hourly gzipped NDJSON objects (<prefix>/yyyy/mm/dd/hh/<signal>-<n>.ndjson.gz) of logs and invocations to an S3-compatible bucket (SigV4; the secret key is sealed) or to the project's own env.storage bucket. Pro only, up to 5 per project. Needs observability:admin. Audited.

operationId createObservabilityExport

Request body: application/json · ObservabilityExportCreate

Status codeDescriptionResponse body
201The destinationObservabilityExport
400——
403——
404——
409——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/exports/{exportId}

One export destination with its delivery state

operationId getObservabilityExport

Status codeDescriptionResponse body
200The destinationObservabilityExport
403——
404——

PATCH /v1/orgs/{orgSlug}/projects/{projectName}/observability/exports/{exportId}

Named fields only; kind cannot change. A change clears the failure state. Audited.

operationId updateObservabilityExport

Request body: application/json · ObservabilityExportUpdate

Status codeDescriptionResponse body
200The destinationObservabilityExport
400——
403——
404——

DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/exports/{exportId}

Remove an export destination

operationId deleteObservabilityExport

Status codeDescriptionResponse body
204Removed—
403——
404——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rehydrations

The project's rehydration jobs

operationId listObservabilityRehydrations

Status codeDescriptionResponse body
200Newest firstobject
403——
404——

POST /v1/orgs/{orgSlug}/projects/{projectName}/observability/rehydrations

Reads a Logpush destination's objects for from–to (at most 72 hours) and loads the part older than the plan's retention back, so the same queries answer for it for seven days. Rehydrated rows are not exported again and do not change the metric rollups. Pro only. 409 still_stored when the whole range is still inside retention. Needs observability:admin. Audited.

operationId createObservabilityRehydration

Request body: application/json · object

Status codeDescriptionResponse body
202QueuedObservabilityRehydration
400——
403——
404——
409——

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rehydrations/{jobId}

One rehydration job

operationId getObservabilityRehydration

Status codeDescriptionResponse body
200The jobObservabilityRehydration
403——
404——

이 페이지의 목차

GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/capabilitiesPOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/queryGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/keysGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/valuesGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/patternsGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/requests/{requestId}GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queriesPOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queriesGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}/starDELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/saved-queries/{queryId}/starGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/pipelinePUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/pipelineGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/scannerPUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/scannerPOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/scanner/testGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/logs-configGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/log-metricsPUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/log-metrics/{name}DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/log-metrics/{name}GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboardsPOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboardsGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}PUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/exportPOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/shareDELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/sharePOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboards/{dashboardId}/widgets/{widgetId}/dataGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboard-settingsPUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/dashboard-settingsGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/markersGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/insightsPOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/insights/{insightId}/resolveGET /v1/orgs/{orgSlug}/projects/{projectName}/syntheticsPUT /v1/orgs/{orgSlug}/projects/{projectName}/synthetics/{checkId}DELETE /v1/orgs/{orgSlug}/projects/{projectName}/synthetics/{checkId}GET /v1/orgs/{orgSlug}/projects/{projectName}/synthetics/{checkId}/runsGET /v1/shared/dashboards/{token}POST /v1/shared/dashboards/{token}/widgets/{widgetId}/dataGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/overviewGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/memoryGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/infrastructureGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/customGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/metrics/custom/namesGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/routesPUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/routesGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/routesGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/routes/{route}/breakdownGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/service-mapGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/compareGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/tracesGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/overviewGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/pagesGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/devicesGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/viewsGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rum/views/{viewId}GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/apm/traces/{traceId}GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filtersPOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filtersPUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filters/{filterId}DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/trace-filters/{filterId}GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/database/queriesGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/database/queries/{fingerprint}GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/database/healthGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profilerPUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/profilerGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/samplingPUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/samplingGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profilesGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/nearGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/flamegraphGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/topGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/profiles/compareGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/heap-snapshotsPOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/heap-snapshotsGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/heap-snapshots/{snapshotId}GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/permissionsGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rolesPUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/roles/{userId}DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/roles/{userId}GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/auditGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/dataGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/capsPUT /v1/orgs/{orgSlug}/projects/{projectName}/observability/capsGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/exportsPOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/exportsGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/exports/{exportId}PATCH /v1/orgs/{orgSlug}/projects/{projectName}/observability/exports/{exportId}DELETE /v1/orgs/{orgSlug}/projects/{projectName}/observability/exports/{exportId}GET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rehydrationsPOST /v1/orgs/{orgSlug}/projects/{projectName}/observability/rehydrationsGET /v1/orgs/{orgSlug}/projects/{projectName}/observability/rehydrations/{jobId}