---
title: "Identify an uploaded image (free)"
method: POST
path: "/identify"
tags: ["Jobs"]
---

# Identify an uploaded image (free)

`POST /identify`

## Request

- Base URL: `https://demarker.io/api/v1`
- URL: `https://demarker.io/api/v1/identify`
- Auth: HTTP bearer

Creates the job and runs the free identify step. Waits up to 5 seconds. If identify is slower, responds 202 with the job id; poll GET /jobs/{id}. A refused image returns status REFUSED with refusalReason. Send an Idempotency-Key header to make retries safe.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `uploadKey` string, required

## Response `200`

OK

- Job
  - `id` string
  - `status` 'UPLOADED' | 'IDENTIFYING' | 'IDENTIFIED' | 'HELD' | 'PENDING' | 'PROCESSING' | 'COMPLETED' | 'FAILED' | 'REFUSED' | 'EXPIRED'
  - `width` integer
  - `height` integer
  - `megapixels` number
  - `hasInvisibleTarget` boolean, nullable
  - `report` object, nullable: Engine provenance report, schema_version 1.
  - `cmiFields` unknown
  - `offers` object[], nullable
    - `tier` string
    - `keepResolution` boolean
    - `credits` integer
  - `balance` integer
  - `refusalReason` 'NSFW' | 'THIRD_PARTY_OVERLAY' | 'null', nullable
  - `creditsCharged` integer
  - `errorCode` string, nullable
  - `outputs` object
    - `image` string, uri, nullable
  - `createdAt` string, date-time

## Other responses

- `202`: Identify is still running
- `default`: Error

---

[API](https://skmtc.dev/demarker/apis/demarker-api.md) · [All operations](https://skmtc.dev/demarker/apis/demarker-api/llms.txt) · [OpenAPI document](https://skmtc.dev/demarker/apis/demarker-api/revisions/d152095351c0?raw)
