> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Service status

> Returns the state of each Didit service (`operational`, `degraded` or `down`), the overall state (the worst of them), and the incidents that are ongoing or were resolved in the last 7 days. Use it to power a status widget or to check Didit's health from your integration.

Public: send no auth header. The response contains no organization data and is the same for every caller. Responses are cached for 30 seconds, so poll no more than once every 30 seconds.



Service Status Prompt
        Copy prompt to clipboard



      
      

\<pre>

\`Read Didit's public service status feed.

GET https://verification.didit.me/v3/status/

Auth: NONE. Send no auth header.

Success (HTTP 200):
\- status: worst state of any service right now: "operational" | "degraded" | "down"
\- updated_at: ISO 8601 time Didit built the response (up to 30 seconds old)
\- services[]: one { key, name, status } per service. Match on key, never on name. Keys:
service_id_verification, service_liveness_face_match, service_aml_screening, service_kyb_registries,
service_database_validation, service_phone_delivery, service_email_delivery, service_transaction_monitoring
\- incidents[]: newest started_at first. Every ongoing incident plus those resolved in the last 7 days (at most 50 resolved). Each:
\{ id, service, service_name, state ("degraded" | "down"), status ("ongoing" | "resolved"), title, body,
affected, country_name, started_at, resolved_at (null while ongoing), duration_minutes (null while ongoing) }
\- title and body are English. To translate, build your own text from service, state and country_name.

Cadence: responses are cached for 30 seconds. Poll no more than once every 30 seconds.

curl -fsS https://verification.didit.me/v3/status/

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Paste into

## OverviewReturns the state of every Didit service, the overall state, and the incidents that are ongoing or were resolved in the last 7 days.
The endpoint is public: send no auth header.
The response contains no organization data and is the same for every caller.## When to use it- **Status widget**: show your users or your support team whether a Didit service is degraded right now.
- **Integration health check**: before you blame your own code for slow or failing checks, see whether Didit reports an incident on the service you call.
- **Incident history**: list what happened in the last 7 days and how long each incident lasted.To check only that the API is reachable, use the [healthcheck](/api-reference/healthcheck.md) instead.## PollingResponses are cached for 30 seconds, so poll no more than once every 30 seconds.
`updated_at` tells you when Didit built the response you received.
A GET rate limit of 600 requests per minute per IP address also applies.## Services`services` lists every service, whether or not it has an incident.
Match on `key`: `name` is an English display name and can change.| `key` | Service |
| - | - |
| `service_id_verification` | ID verification |
| `service_liveness_face_match` | Liveness and face match |
| `service_aml_screening` | AML screening |
| `service_kyb_registries` | KYB registries |
| `service_database_validation` | Database validation |
| `service_phone_delivery` | Phone verification delivery |
| `service_email_delivery` | Email verification delivery |
| `service_transaction_monitoring` | Transaction monitoring |Each service's `status` is `operational`, `degraded` or `down`.
It is `operational` when the service has no ongoing incident, and otherwise the worst state of its ongoing incidents.
The top-level `status` is the worst state of all services.## Incidents`incidents` lists every ongoing incident and the incidents resolved in the last 7 days, newest `started_at` first.
At most 50 resolved incidents are listed.- `state` is `degraded` or `down`. A resolved incident keeps the last state it had.
- `status` is `ongoing` until the service recovers, then `resolved`.
- `resolved_at` and `duration_minutes` are `null` while the incident is ongoing.
- `affected` and `country_name` name the country or registry affected, for example `Brazil (CPF)` and `Brazil`. They are empty when the incident is not tied to a country or registry.
- `title` and `body` are English. To show the incident in another language, build your own text from `service`, `state` and `country_name`.## Example response```json theme={null}
{
  "status": "degraded",
  "updated_at": "2026-10-13T09:41:07.512345Z",
  "services": [
    { "key": "service_id_verification", "name": "ID verification", "status": "operational" },
    { "key": "service_liveness_face_match", "name": "Liveness and face match", "status": "operational" },
    { "key": "service_aml_screening", "name": "AML screening", "status": "operational" },
    { "key": "service_kyb_registries", "name": "KYB registries", "status": "operational" },
    { "key": "service_database_validation", "name": "Database validation", "status": "degraded" },
    { "key": "service_phone_delivery", "name": "Phone verification delivery", "status": "operational" },
    { "key": "service_email_delivery", "name": "Email verification delivery", "status": "operational" },
    { "key": "service_transaction_monitoring", "name": "Transaction monitoring", "status": "operational" }
  ],
  "incidents": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "service": "service_database_validation",
      "service_name": "Database validation",
      "state": "degraded",
      "status": "ongoing",
      "title": "Database validation is degraded in Brazil.",
      "body": "Checks against Brazil (CPF) may be slow or fail since 08:55 UTC.",
      "affected": "Brazil (CPF)",
      "country_name": "Brazil",
      "started_at": "2026-10-13T08:55:00Z",
      "resolved_at": null,
      "duration_minutes": null
    },
    {
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "service": "service_aml_screening",
      "service_name": "AML screening",
      "state": "down",
      "status": "resolved",
      "title": "AML screening is back to normal.",
      "body": "Recovered at 14:32 UTC after 17 minutes.",
      "affected": "",
      "country_name": "",
      "started_at": "2026-10-11T14:15:00Z",
      "resolved_at": "2026-10-11T14:32:00Z",
      "duration_minutes": 17
    }
  ]
}
```## Related- [Healthcheck](/api-reference/healthcheck.md): a public liveness probe that also needs no auth header.
- [Alert webhooks](/integration/alert-webhooks.md): get `alert.service.degraded` and `alert.service.recovered` pushed to your endpoint for the services your organization uses.
- [Rate limiting](/integration/rate-limiting.md)


## OpenAPI

````yaml GET /v3/status/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: Identity verification API. Authenticate with x-api-key header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/status/:
    get:
      tags:
        - Status
      summary: Get service status (public, unauthenticated)
      description: >-
        Returns the state of each Didit service (`operational`, `degraded` or
        `down`), the overall state (the worst of them), and the incidents that
        are ongoing or were resolved in the last 7 days. Use it to power a
        status widget or to check Didit's health from your integration.


        Public: send no auth header. The response contains no organization data
        and is the same for every caller. Responses are cached for 30 seconds,
        so poll no more than once every 30 seconds.
      operationId: get_v3_status
      parameters: []
      responses:
        '200':
          description: Current service status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceStatusFeed'
              examples:
                One service degraded:
                  summary: An ongoing incident and one resolved this week
                  value:
                    status: degraded
                    updated_at: '2026-10-13T09:41:07.512345Z'
                    services:
                      - key: service_id_verification
                        name: ID verification
                        status: operational
                      - key: service_liveness_face_match
                        name: Liveness and face match
                        status: operational
                      - key: service_aml_screening
                        name: AML screening
                        status: operational
                      - key: service_kyb_registries
                        name: KYB registries
                        status: operational
                      - key: service_database_validation
                        name: Database validation
                        status: degraded
                      - key: service_phone_delivery
                        name: Phone verification delivery
                        status: operational
                      - key: service_email_delivery
                        name: Email verification delivery
                        status: operational
                      - key: service_transaction_monitoring
                        name: Transaction monitoring
                        status: operational
                    incidents:
                      - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                        service: service_database_validation
                        service_name: Database validation
                        state: degraded
                        status: ongoing
                        title: Database validation is degraded in Brazil.
                        body: >-
                          Checks against Brazil (CPF) may be slow or fail since
                          08:55 UTC.
                        affected: Brazil (CPF)
                        country_name: Brazil
                        started_at: '2026-10-13T08:55:00Z'
                        resolved_at: null
                        duration_minutes: null
                      - id: 7c9e6679-7425-40de-944b-e07fc1f90ae7
                        service: service_aml_screening
                        service_name: AML screening
                        state: down
                        status: resolved
                        title: AML screening is back to normal.
                        body: Recovered at 14:32 UTC after 17 minutes.
                        affected: ''
                        country_name: ''
                        started_at: '2026-10-11T14:15:00Z'
                        resolved_at: '2026-10-11T14:32:00Z'
                        duration_minutes: 17
                All operational:
                  summary: No incident in the last 7 days
                  value:
                    status: operational
                    updated_at: '2026-10-13T09:41:07.512345Z'
                    services:
                      - key: service_id_verification
                        name: ID verification
                        status: operational
                      - key: service_liveness_face_match
                        name: Liveness and face match
                        status: operational
                      - key: service_aml_screening
                        name: AML screening
                        status: operational
                      - key: service_kyb_registries
                        name: KYB registries
                        status: operational
                      - key: service_database_validation
                        name: Database validation
                        status: operational
                      - key: service_phone_delivery
                        name: Phone verification delivery
                        status: operational
                      - key: service_email_delivery
                        name: Email verification delivery
                        status: operational
                      - key: service_transaction_monitoring
                        name: Transaction monitoring
                        status: operational
                    incidents: []
        '429':
          description: >-
            More than 600 GET requests in a minute from the same IP address (or
            the same API key, if you send one). Honor `Retry-After` before
            retrying.
          content:
            application/json:
              schema:
                type: object
                required:
                  - detail
                properties:
                  detail:
                    type: string
              example:
                detail: >-
                  GET request rate limit exceeded. You can make up to 600
                  requests per minute.
      security:
        - {}
      x-codeSamples:
        - lang: curl
          label: curl
          source: curl -fsS https://verification.didit.me/v3/status/
        - lang: python
          label: Python
          source: >-
            import requests


            resp = requests.get('https://verification.didit.me/v3/status/',
            timeout=5)

            resp.raise_for_status()

            feed = resp.json()

            print(feed['status'])

            for service in feed['services']:
                if service['status'] != 'operational':
                    print(service['key'], service['status'])
        - lang: javascript
          label: JavaScript
          source: >-
            const feed = await
            fetch('https://verification.didit.me/v3/status/').then((r) =>
            r.json());

            console.log(feed.status);

            const affected = feed.services.filter((s) => s.status !==
            'operational');

            console.log(affected.map((s) => `${s.key}: ${s.status}`));
components:
  schemas:
    ServiceStatusFeed:
      type: object
      description: >-
        Public service status: the state of each Didit service, the overall
        state, and the incidents that are ongoing or were resolved in the last 7
        days.
      required:
        - status
        - updated_at
        - services
        - incidents
      properties:
        status:
          type: string
          enum:
            - operational
            - degraded
            - down
          description: >-
            The worst state of any service right now, decided by the ongoing
            incidents only.
          example: degraded
        updated_at:
          type: string
          format: date-time
          description: >-
            When Didit built this response (ISO 8601, UTC). Responses are cached
            for 30 seconds, so it can be up to 30 seconds old.
          example: '2026-10-13T09:41:07.512345Z'
        services:
          type: array
          description: One entry per service, every service always listed.
          items:
            $ref: '#/components/schemas/ServiceStatusService'
        incidents:
          type: array
          description: >-
            Newest `started_at` first. Every ongoing incident, plus the
            incidents resolved in the last 7 days (at most 50 resolved
            incidents). Empty when nothing happened in that time.
          items:
            $ref: '#/components/schemas/ServiceStatusIncident'
    ServiceStatusService:
      type: object
      required:
        - key
        - name
        - status
      properties:
        key:
          type: string
          enum:
            - service_id_verification
            - service_liveness_face_match
            - service_aml_screening
            - service_kyb_registries
            - service_database_validation
            - service_phone_delivery
            - service_email_delivery
            - service_transaction_monitoring
          description: >-
            Stable service key. Match on this, never on the display name.
            `service_id_verification`: ID verification,
            `service_liveness_face_match`: Liveness and face match,
            `service_aml_screening`: AML screening, `service_kyb_registries`:
            KYB registries, `service_database_validation`: Database validation,
            `service_phone_delivery`: Phone verification delivery,
            `service_email_delivery`: Email verification delivery,
            `service_transaction_monitoring`: Transaction monitoring.
          example: service_database_validation
        name:
          type: string
          description: English display name of the service.
          example: Database validation
        status:
          type: string
          enum:
            - operational
            - degraded
            - down
          description: >-
            `operational` when no incident is ongoing for the service, otherwise
            the worst state of its ongoing incidents.
          example: degraded
    ServiceStatusIncident:
      type: object
      required:
        - id
        - service
        - service_name
        - state
        - status
        - title
        - body
        - affected
        - country_name
        - started_at
        - resolved_at
        - duration_minutes
      properties:
        id:
          type: string
          format: uuid
          description: Incident ID.
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        service:
          type: string
          enum:
            - service_id_verification
            - service_liveness_face_match
            - service_aml_screening
            - service_kyb_registries
            - service_database_validation
            - service_phone_delivery
            - service_email_delivery
            - service_transaction_monitoring
          description: Key of the affected service (see `services[].key`).
          example: service_database_validation
        service_name:
          type: string
          description: English display name of the affected service.
          example: Database validation
        state:
          type: string
          enum:
            - degraded
            - down
          description: >-
            How the service is affected. A resolved incident keeps the last
            state it had.
          example: degraded
        status:
          type: string
          enum:
            - ongoing
            - resolved
          description: '`ongoing` until the service recovers, then `resolved`.'
          example: ongoing
        title:
          type: string
          description: >-
            English headline. To translate it, build your own text from
            `service`, `state` and `country_name`.
          example: Database validation is degraded in Brazil.
        body:
          type: string
          description: >-
            English detail line: since when checks may be slow or fail, or when
            it recovered.
          example: Checks against Brazil (CPF) may be slow or fail since 08:55 UTC.
        affected:
          type: string
          description: >-
            Countries or registries affected, for example `Brazil (CPF)`. Empty
            when the incident is not tied to a country or registry.
          example: Brazil (CPF)
        country_name:
          type: string
          description: >-
            Country affected, in English. Empty when the incident is not tied to
            a country.
          example: Brazil
        started_at:
          type: string
          format: date-time
          description: When the incident started (ISO 8601, UTC).
          example: '2026-10-13T08:55:00Z'
        resolved_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            When the service recovered (ISO 8601, UTC). `null` while the
            incident is ongoing.
        duration_minutes:
          type: integer
          nullable: true
          description: >-
            Whole minutes from `started_at` to `resolved_at`. `null` while the
            incident is ongoing.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.