---
title: "POST /api/v3/submissions/{id}/validate"
method: POST
path: "/api/v3/submissions/{id}/validate"
tags: ["Submissions"]
---

# POST /api/v3/submissions/{id}/validate

`POST /api/v3/submissions/{id}/validate`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/api/v3/submissions/{id}/validate`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/wildmeorg/apis/wildbook-v3-api/docs/api/v3/submissions/:id/validate/post.ts> (a function with typed inputs; its response is checked against the schema)

Validate current revision without changing it. Validation failures, including empty rows, return 200 with valid=false and source-row issues. No domain objects are created.

## Path parameters

- `id` string, uuid, required

## Headers

- `If-Match` string, required

## Request body

- SubmissionApiValidate: Empty object; If-Match selects the input revision.

## Response `200`

Success

- SubmissionApiValidation
  - `id` string, uuid, required
  - `submissionId` string, uuid, required
  - `revision` integer, required
  - `valid` boolean, required
  - `configDigest` string, required
  - `manifestDigest` string, required
  - `errors` SubmissionApiIssue[], required
    - `code` string, required
    - `message` string, required
    - `clientRowId` string
    - `rowIndex` integer
    - `field` string
    - `reason` string: Present on INVALID_VALUE issues: why the value was rejected. One of REQUIRED, REQUIRES_FIELD, UNPARSEABLE, OUT_OF_RANGE, FUTURE_DATE, NOT_CONFIGURED, INVALID. New reasons may be added; treat an unknown reason as INVALID.
    - `limit` number
  - `warnings` SubmissionApiIssue[], required
    - `code` string, required
    - `message` string, required
    - `clientRowId` string
    - `rowIndex` integer
    - `field` string
    - `reason` string: Present on INVALID_VALUE issues: why the value was rejected. One of REQUIRED, REQUIRES_FIELD, UNPARSEABLE, OUT_OF_RANGE, FUTURE_DATE, NOT_CONFIGURED, INVALID. New reasons may be added; treat an unknown reason as INVALID.
    - `limit` number
  - `normalizedRows` SubmissionApiRow[], required
    - `clientRowId` string, required
    - `fields` object, required: Normalized bulk-import field names. Actual supported fields, required values and types are supplied by capabilities. Nulls and unknown fields are rejected in this contract.
  - `effectiveOwnerId` string, uuid, required
  - `processing` SubmissionApiProcessing, required: Omit the entire processing object to select detect-and-identify. Explicit import-only skips detection and identification. When provided, mode is required.
    - `mode` 'import-only' | 'detect-and-identify', required

## Other responses

- `400`: Malformed request
- `401`: Authentication required or invalid
- `403`: Not enrolled or not permitted
- `404`: Not found or not visible
- `405`: Method not allowed; Allow header lists supported methods
- `409`: State, key or content conflict
- `412`: Stale revision
- `413`: Input too large
- `428`: Required revision precondition missing
- `429`: Quota or concurrency limit
- `500`: Internal failure; retry only according to operation idempotency rules
- `503`: Feature temporarily unavailable

## Changes

- **2026-09-28** `e22b05e67794`: 13 info
  - added the optional property `errors/items/reason` to the response with the `200` status
  - added the optional property `issues/items/reason` to the response with the `400` status
  - added the optional property `issues/items/reason` to the response with the `401` status
  - added the optional property `issues/items/reason` to the response with the `403` status
  - …9 more
- **2026-09-28** `c06d47557af5`: 1 warning, 1 info
  - added the new `detect-and-identify` enum value to the `processing/mode` response property for the response status `200`
  - the `mode` response's property default value changed from `import-only` to `detect-and-identify` for the status `200`
- **2026-09-28** `2918ab3fac48`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/wildmeorg/apis/wildbook-v3-api/changes/api/v3/submissions/:id/validate/post.md)

---

[API](https://skmtc.dev/wildmeorg/apis/wildbook-v3-api.md) - [All operations](https://skmtc.dev/wildmeorg/apis/wildbook-v3-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wildmeorg/apis/wildbook-v3-api/revisions/e22b05e67794?raw)
