---
title: "Health Providers"
method: GET
path: "/health/providers"
tags: ["health"]
---

# Health Providers

`GET /health/providers`

## Request

- Base URL: `https://api.pointifytravels.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.pointifytravels.com/health/providers`
- Auth: none declared

Per-provider search health — why a provider returned nothing.

WHY THIS EXISTS: Duffel contributed zero offers to every cash search in
production and there was no way to tell why from outside the box (#4838).
Three very different causes are indistinguishable in the search stream:

  1. credential missing — ``duffel_provider.search()`` returns ``[]`` when
     ``duffel_api_token`` is blank, logs a warning, and (since #3780) an
     empty API result is deliberately NOT a circuit-breaker failure. So a
     blank or misnamed env var yields zero deals, no error, no breaker
     trip, and no external signal at all.
  2. circuit breaker open — the provider is skipped before it is called.
  3. genuinely no inventory on the route — a correct, healthy answer.

All three surfaced as the same thing because the aggregator labels any
zero-result provider ``status: "error"``. This endpoint separates them.

Follows the ``/health/auth-config`` convention: credentials are reported as
a PRESENCE BIT only, never the value. Inherits the ``/health`` internal-auth
exemption so it is curl-able without a key — it exposes no secrets, no PII
and no booking state, only whether our own plumbing is connected.

## Response `200`

Successful Response

- object

---

[API](https://skmtc.dev/pointifytravels/apis/pointify-deal-engine.md) · [All operations](https://skmtc.dev/pointifytravels/apis/pointify-deal-engine/llms.txt) · [OpenAPI document](https://skmtc.dev/pointifytravels/apis/pointify-deal-engine/revisions/4350142a4216?raw)
