---
title: "Queue a deployment service readiness check"
method: POST
path: "/v1/admin/services/check"
tags: ["Admin"]
---

# Queue a deployment service readiness check

`POST /v1/admin/services/check`

## Request

- Base URL: `https://api.openworklabs.com`
- URL: `https://api.openworklabs.com/v1/admin/services/check`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Queues bounded, read-only service checks: a database query, service health endpoints, and a mail sign-in or mail-provider domain lookup. Active checks and matching-configuration results completed within 30 seconds coalesce without changing timestamps or spending admission. Durable global admission limits new checks across replicas. Never sends email, calls a model, provisions credentials or initiates Slack events.

## Response `202`

Check queued, already in progress, or completed recently with matching configuration.

- DeploymentServiceReadiness
  - `version` 2, required
  - `checkedAt` string, date-time, nullable, required
  - `checking` boolean, required
  - `server` DenServerFacts, required
    - `version` string, required
    - `startedAt` string, date-time, required
    - `startupMs` integer, nullable, required
  - `services` DeploymentServiceStatus[], required
    - `id` 'database' | 'gateway' | 'headlessRunner' | 'workbot' | 'email', required
    - `required` boolean, required
    - `configured` boolean, required
    - `state` 'ready' | 'not_configured' | 'misconfigured' | 'unreachable' | 'unknown', required
    - `reason` 'not_checked' | 'not_configured' | 'missing_configuration' | 'invalid_configuration' | 'health_verified' | 'database_verified' | 'authentication_failed' | 'unexpected_response' | 'request_failed' | 'timeout' | 'dependency_unavailable' | 'configuration_only' | 'incompatible_service' | 'email_verified' | 'email_key_verified' | 'email_sender_unverified' | 'resume_misconfigured', required
    - `missingSettings` string[], required
    - `dependencies` string[], required
    - `notes` string[], required
    - `durationMs` integer, nullable, required
    - `checkedAt` string, date-time, nullable, required
    - `lastSuccessAt` string, date-time, nullable, required
    - `stale` boolean, required

## Other responses

- `401`: Authentication required.
- `403`: Deployment operator access required.
- `429`: No recent matching snapshot is available and another replica recently admitted a check; Retry-After indicates the admission window.
- `503`: Diagnostic admission is unavailable; no upstream detail is exposed.

## Changes

- **2026-10-20** `352faa73c6a2`: 2 breaking, 8 warning, 23 info
  - the `version` response property const value changed from `1` to `2` for the status `202`
  - the `version` response property const value changed from `1` to `2` for the status `429`
  - added the new `email_key_verified` enum value to the `services/items/reason` response property for the response status `202`
  - added the new `email_key_verified` enum value to the `services/items/reason` response property for the response status `429`
  - …29 more
- **2026-10-20** `aef4d1db5034`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/openworklabs/apis/den-api/changes/v1/admin/services/check/post.md)

---

[API](https://skmtc.dev/openworklabs/apis/den-api.md) · [All operations](https://skmtc.dev/openworklabs/apis/den-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openworklabs/apis/den-api/revisions/e6eb4e5ce8a3?raw)
