---
title: "Submit KYC for a customer (via image upload)"
method: POST
path: "/v1/headless_kyc?"
tags: ["Headless KYC"]
---

# Submit KYC for a customer (via image upload)

`POST /v1/headless_kyc?`

Submits KYC data for a customer on behalf of the merchant. Only TIER_2 is supported. Idempotent on customerReferenceId.

This API spec details the request body for the **`multipart/form-data` content type**. For the `application/json` content type, please refer to the `Submit KYC for a customer (via image URL)` endpoint.

**Note:** This endpoint is only available to merchants configured by the Breeze team. Please reach out to the Breeze team to find out more.

## Headers

- `Content-Type` string
- `Accept` string

## Response `200`

Success

- object — The created or existing KYC request
  - `status` 'SUCCEEDED', required
  - `data` SubmitHeadlessKycWithImageUploadResponse, required — Response data for headless KYC endpoints
    - `id` string, required
    - `customerId` string
    - `accountId` string
    - `kycId` string
    - `kycStatus` 'pending' | 'processing' | 'approved' | 'rejected' | 'under_review', required — HeadlessKycStatus - mirrors KYC tier status for merchant-facing API
    - `customerReferenceId` string, required
    - `tier` 'TIER_0' | 'TIER_1' | 'TIER_2' | 'TIER_3', required
    - `rejectionReason` string
    - `createdAt` number, required
    - `updatedAt` number, required

## Other responses

- `400` — Bad request
- `401` — Unauthorized

---

[API](https://skmtc.dev/breeze/apis/breeze-api.md) · [All operations](https://skmtc.dev/breeze/apis/breeze-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/breeze/breeze-api/revisions/8911892bdf29/schema)
