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

# Eligibility API

> Request real-time dental insurance eligibility and benefits verification across 200+ payers via REST, GraphQL, or SDK.

The Eligibility API provides real-time eligibility and benefits verification for dental insurance coverage across 200+ payers.

## SDK

```typescript theme={null}
const response = await client.eligibility.request({
  payer: { id: '52133' },
  provider: { npi: '1447364856', tax_id: '270872579' },
  subscriber: {
    first_name: 'John',
    last_name: 'Smith',
    member_id: '123456789',
    group_number: 'GRP001',
    dob: '01/15/1990',
  },
  version: 'v2',
});
```

## REST

**Endpoint:** `POST https://wg.api.dental/rest/Eligibility`

**Headers:**

* `X-Token-API: your-api-key`
* `Content-Type: application/json`

```json theme={null}
{
  "payer": { "id": "52133" },
  "provider": {
    "npi": "1447364856",
    "tax_id": "270872579"
  },
  "subscriber": {
    "first_name": "John",
    "last_name": "Smith",
    "member_id": "123456789",
    "dob": "01/15/1990",
    "group_number": "GRP001"
  },
  "version": "v2"
}
```

## GraphQL

**Endpoint:** `POST https://graphql.api.dental/gql`

**Playground:** [https://graphql.api.dental/](https://graphql.api.dental/)

```graphql theme={null}
mutation Api_RequestEligibility {
  api_RequestEligibility(
    payer: { id: "52133" }
    provider: { npi: "1447364856", tax_id: "270872579" }
    subscriber: {
      first_name: "John"
      last_name: "Smith"
      member_id: "123456789"
      dob: "01/15/1990"
      group_number: "GRP001"
    }
    version: "v2"
  )
}
```

## Request Parameters

| Parameter | Type | Required | Description |
| - | - | - | - |
| `payer.id` | string | Yes | Payer ID from the [Payer List](/apis/payer) endpoint |
| `provider.npi` | string | Yes | Provider's National Provider Identifier (10 digits) |
| `provider.tax_id` | string | Yes | Provider's Tax Identification Number (9 digits) |
| `subscriber.first_name` | string | Yes | Subscriber's first name |
| `subscriber.last_name` | string | Yes | Subscriber's last name |
| `subscriber.member_id` | string | Yes | Insurance member ID |
| `subscriber.dob` | string | Yes | Date of birth (MM/DD/YYYY) |
| `subscriber.group_number` | string | Yes | Insurance group number |
| `dependent` | object | No | Same fields as subscriber, for dependent eligibility checks |
| `version` | string | Yes | API version — use `"v2"` |

## Error Responses

When the upstream payer service returns an error, the API passes through the full error details:

```json theme={null}
{
  "error": {
    "statusCode": 400,
    "message": "Invalid payer ID: INVALID_PAYER, please check https://developers.onederful.co/ for valid payer IDs",
    "upstream": {
      "message": "Invalid payer ID: INVALID_PAYER, please check https://developers.onederful.co/ for valid payer IDs",
      "code": "invalid_payer_id",
      "primaryReason": "Invalid payer ID"
    }
  }
}
```

| Field | Description |
| - | - |
| `statusCode` | HTTP status code from the upstream payer service |
| `message` | Human-readable error summary |
| `upstream` | Full error response body from the payer service (object or string) |

<Tip>
  Add the [True Eligibility](/features/true-eligibility) transform to automatically normalize raw payer responses into 100+ standardized fields.
</Tip>
