---
title: "Fetch Descriptors (v2)"
method: GET
path: "/api/v2/descriptors"
tags: ["Enrollment"]
---

# Fetch Descriptors (v2)

`GET /api/v2/descriptors`

List every descriptor on your account as a flat, filterable record set: one row per descriptor with its program (`ethoca`, `cdrn`, `rdr`, `amex`, `discover`; `null` for legacy types not tied to a program), status, descriptor name or BIN/CAID, owning merchant id, and timestamps. Filter with `program` and/or `status` (case-insensitive; an unknown value returns a 400 listing the valid ones) and paginate with `page`/`per`. Use `GET /api/enrollment_status` for the per-program roll-up instead; record ids feed `POST /api/unenroll`.

## Query parameters

- `program` 'ethoca' | 'cdrn' | 'rdr' | 'amex' | 'discover'
- `status` 'Pending' | 'Enrolled' | 'Disabled' | 'Surpressed' | 'Processing' | 'Rejected' | 'InReview' | 'PendingRemoval' — Descriptor lifecycle state. `PendingRemoval` means an unenroll was requested for a previously `Enrolled` descriptor; it stays live until provider de-registration is confirmed, then the record is deleted.
- `page` integer
- `per` integer

## Headers

- `X-API-Key` string, required

## Response `200`

OK

- V2DescriptorsResponse
  - `descriptors` DescriptorRecord[], required
    - `id` string, nullable
    - `merchantId` string, nullable — Owning merchant (retailer) id, as returned by `GET /api/v2/merchants`.
    - `program` 'ethoca' | 'cdrn' | 'rdr' | 'amex' | 'discover', nullable — The alert program this descriptor belongs to. `null` for legacy descriptor types (JCB, TC40, …) not tied to a program.
    - `status` 'Pending' | 'Enrolled' | 'Disabled' | 'Surpressed' | 'Processing' | 'Rejected' | 'InReview' | 'PendingRemoval', required — Descriptor lifecycle state. `PendingRemoval` means an unenroll was requested for a previously `Enrolled` descriptor; it stays live until provider de-registration is confirmed, then the record is deleted.
    - `descriptorName` string, nullable — The enrolled descriptor string. `null` for RDR records, which are keyed by BIN/CAID.
    - `bin` string, nullable — RDR only.
    - `caid` string, nullable — RDR only.
    - `createdAt` string, date-time, nullable
    - `updatedAt` string, date-time, nullable
  - `page` integer, required
  - `per` integer, required
  - `total` integer, required

## Other responses

- `400` — Unknown `program` or `status` filter value; the error lists the valid ones.
- `401` — Missing or invalid API key.

---

[API](https://skmtc.net/chargeblast/apis/chargeblast-api.md) · [All operations](https://skmtc.net/chargeblast/apis/chargeblast-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/chargeblast/chargeblast-api/revisions/9cc519753b33/schema)
