---
title: "Submit batch domain analysis"
method: POST
path: "/analyze/batch"
tags: ["analysis"]
---

# Submit batch domain analysis

`POST /analyze/batch`

## Request

- Base URL: `https://api.whoisgeni.us` (the document declares no server; this is the origin it was published from)
- URL: `https://api.whoisgeni.us/analyze/batch`
- Auth: none declared

Submit multiple domains for analysis in a single request.

Processes each domain independently -- partial failures do not abort
the batch. Returns 202 if all succeed, 207 if some fail, 422 if all fail.
Each accepted domain gets an audit log entry in the background.

Quota enforcement: each domain in the batch gets its own atomic Redis
INCR via check_and_increment. Free tier users are hard-blocked at quota.
Paid tier overage is allowed and billed via periodic InvoiceItem.

With ``depth=quick`` every domain runs through the inline fast path
instead (see POST /analyze): 200 when all resolve, 207 partial, 422 when
all fail. Quick batches are capped at QUICK_BATCH_MAX_DOMAINS.

## Headers

- `X-API-Key` string, nullable

## Request body

- BatchSubmitRequest: Request body for submitting multiple domains for analysis. Attributes: domains: List of domain names to analyze (1-50).
  - `domains` string[], required
  - `depth` 'deep' | 'quick': Analysis depth, applied to every domain in the batch. 'deep' (default) queues full async analyses (202/207/422). 'quick' runs each domain through the inline fast path (same semantics as POST /analyze depth=quick) and is capped at 10 domains per batch (422 above) so the request stays under the edge timeout; it cannot be combined with force_refresh (400).
  - `force_refresh` boolean
  - `callback_url` string, nullable: Optional URL to receive webhook POSTs when each analysis completes
  - `output_schema` string, uuid, nullable: Template ID for response projection (mutually exclusive with output_fields)
  - `output_fields` OutputFieldsSpec: Inline field projection spec for response customization. Specifies a mode (include or exclude) and a list of dot-notation field paths to apply as a filter on the scoring_result dict. Attributes: mode: ``"include"`` to whitelist fields, ``"exclude"`` to blacklist. fields: List of dot-notation field paths (min 1 required).
    - `mode` 'include' | 'exclude', required
    - `fields` string[], required

## Response `200`

depth=quick only: every domain resolved inline

## Other responses

- `202`: Batch submission results
- `207`: Partial success -- some domains failed
- `401`: Unauthorized — missing or invalid API key/JWT.
- `422`: Validation Error

---

[API](https://skmtc.dev/whoisgeni/apis/whoisgenius.md) · [All operations](https://skmtc.dev/whoisgeni/apis/whoisgenius/llms.txt) · [OpenAPI document](https://skmtc.dev/whoisgeni/apis/whoisgenius/revisions/707f1c34f6b3?raw)
