# Get KYC status (/docs/api-reference/reseller/getResellerKycStatus)

> Get the identity verification status of a client for every region where verification is required. Use next_step to know which step to call next, so you drive the whole flow off one poll instead of hardcoding the sequence.

> **Reseller accounts only.** [Request access](https://omnidim.io/contact-us?reason=reseller_api\&lock=1).

**GET** `/reseller/kyc/status`

Get the identity verification status of a client for every region
where verification is required. Use `next_step` to know which step
to call next, so you drive the whole flow off one poll instead of
hardcoding the sequence.

```yaml
operationId: getResellerKycStatus
parameters:
  - name: user_id
    in: query
    required: true
    description: ID of the child user to check.
    schema:
      type: integer
    example: 1234
responses:
  '200':
    description: KYC status per region.
    content:
      application/json:
        schema:
          type: object
          properties:
            success:
              type: boolean
            user_id:
              type: integer
            regions:
              type: array
              description: One entry per region, each with that region's verification state.
              items:
                type: object
                properties:
                  region:
                    type: string
                    enum:
                      - IN
                      - US
                  kyc_required:
                    type: boolean
                    description: >-
                      Whether this client must complete verification before buying a number in this
                      region.
                  can_purchase:
                    type: boolean
                    description: >-
                      Whether this client can buy a number in this region right now. Always agrees
                      with what a purchase attempt would allow.
                  status:
                    type: string
                    description: |
                      Where this client has reached in verification.
                      `not_started` before anything is submitted,
                      `completed` once they are verified. Drive your
                      integration off `next_step`, not this value.
                  next_step:
                    type: string
                    nullable: true
                    description: The step to call next. `null` once `status` is `completed`.
                    enum:
                      - register
                      - verify-otp
                      - verify-pan
                      - aadhaar-otp
                      - aadhaar-verify
                      - verify-gst
                      - preview
                      - accept
        example:
          success: true
          user_id: 1234
          regions:
            - region: IN
              kyc_required: true
              can_purchase: false
              status: pan_verified
              next_step: aadhaar-otp
  '401':
    description: Missing or invalid API key.
  '403':
    description: |
      A `user_id` was sent by a key that is not a reseller admin, or
      the named client's account is currently unavailable.
    content:
      application/json:
        schema:
          type: object
          properties:
            error:
              type: string
              description: Machine-readable error code.
            error_description:
              type: string
              description: Human-readable explanation.
        example:
          error: forbidden
          error_description: Access denied. Only reseller accounts can use this endpoint.
  '404':
    description: Child user not found under this reseller account.
    content:
      application/json:
        schema:
          type: object
          properties:
            error:
              type: string
              description: Machine-readable error code.
            error_description:
              type: string
              description: Human-readable explanation.
        example:
          error: not_found
          error_description: Child user not found.
  '500':
    description: Unexpected server error.
    content:
      application/json:
        schema:
          allOf:
            - type: object
              properties:
                error:
                  type: string
                  description: Machine-readable error code.
                error_description:
                  type: string
                  description: Human-readable explanation.
            - type: object
              properties:
                ref:
                  type: string
                  description: Reference to quote to support.
        example:
          error: server_error
          error_description: >-
            Something went wrong on our side. Please try again shortly, or contact support with
            reference a1b2c3d4e5f6.
          ref: a1b2c3d4e5f6
```

**curl**

```bash
curl -X GET "https://omnidim.io/api/v1/reseller/kyc/status?user_id=1234" \
  -H "Authorization: Bearer $OMNIDIM_API_KEY"
```

`next_step` is the field to drive your integration from: read it once here to
get the first step, then chain from each step's response until the status is
`completed`.

`can_purchase` is the exact gate a purchase enforces, so this answer and a
purchase attempt can never disagree.

The full loop, with the step table, is in the
[Reseller API guide](/docs/reseller-api).