---
title: "Ingest a cross-instance diagnostic report"
method: POST
path: "/diagnostics/ingest"
tags: ["Diagnostics"]
---

# Ingest a cross-instance diagnostic report

`POST /diagnostics/ingest`

## Request

- Base URL: `https://app.openpo.st/api/v1`
- URL: `https://app.openpo.st/api/v1/diagnostics/ingest`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `openpost_session`

Public receiver for privacy-limited diagnostic reports sent by OpenPost instances. Strictly validated and quota-limited; accepted reports are forwarded to the maintainer channel.

## Request body

- IngestDiagnosticsInputBody
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `attempt_count` integer: Attempt count, when relevant
  - `db_driver` string: Normalized database driver
  - `error_code` string, required: Normalized error code from the diagnostics catalog
  - `error_kind` 'deadline_exceeded' | 'canceled' | 'not_found' | 'permission_denied' | 'connection_refused' | 'connection_reset' | 'unexpected_eof' | 'dns_error' | 'network_timeout' | 'runtime_error' | 'type_error' | 'reference_error' | 'range_error' | 'syntax_error' | 'quota_exceeded' | 'security_error' | 'not_supported' | 'invalid_state' | 'abort_error' | 'network_error': Allowlisted error type, never message text
  - `first_seen` string: RFC3339 first observation, when known
  - `frames` DiagnosticsFrame[], nullable: Sanitized stack frames without domains or local paths
    - `column` integer: Source column, when available
    - `function` string, required: Function name
    - `line` integer, required: Source line
    - `module` string, required: Normalized module path and file, never a URL or domain
  - `http_method` 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'CONNECT' | 'TRACE': HTTP request method, when relevant
  - `http_status` integer: HTTP status, when relevant
  - `installation_id` string, required: Random installation ID generated by the sending instance
  - `last_seen` string: RFC3339 last observation, when known
  - `occurrence_count` integer: Aggregated occurrence count
  - `operation` string, required: Route template, job type, or operation name
  - `provider` string: First-party platform, when relevant
  - `retry_count` integer: Retry count, when relevant
  - `revision` string, required: OpenPost source revision reported by the sending instance
  - `storage_driver` string: Normalized media storage driver
  - `surface` 'browser' | 'backend' | 'worker', required: Surface where the failure was observed
  - `version` string, required: OpenPost release reported by the sending instance

## Response `200`

OK

- IngestDiagnosticsOutputBody
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `accepted` boolean, required

## Other responses

- `400`: Bad Request
- `422`: Unprocessable Entity
- `429`: Too Many Requests
- `500`: Internal Server Error
- `503`: Service Unavailable

---

[API](https://skmtc.dev/openpo/apis/openpost-api.md) · [All operations](https://skmtc.dev/openpo/apis/openpost-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openpo/apis/openpost-api/revisions/67d3964458a7?raw)
