---
title: "DEMO - submit a batch of decisioning operations"
method: POST
path: "/batch"
tags: ["demo", "batch", "agent-readiness"]
---

# DEMO - submit a batch of decisioning operations

`POST /batch`

**Demo-only batch surface published on www.forter.com for AI agent readiness, NOT on api.forter-secure.com.** Accepts an array of operations (or an `{ operations: [...] }` envelope) and returns 202 Accepted with `Location: /batch/jobs/<job_id>` + `Retry-After: 1`. Poll the URL until `status=completed`. Per-operation responses are canned (decision=NOT_REVIEWED) - production batch decisioning requires the real REST API with credentials issued at https://portal.forter.com after a signed MSA. The canonical (production) Forter REST surface remains single-event today; this batch endpoint exists strictly so AI scanners can verify the 202+polling pattern end-to-end against a reachable URL. See also: the BatchRequest / BatchResponse / BatchItemResult / BatchSize component schemas and the root `x-batch` extension below.

## Headers

- `Idempotency-Key` string

## Request body

- union
  - DemoBatchOperationItem[]
    - `id` string — Caller-assigned op id; echoed in the polling response so callers correlate.
    - `kind` 'order' | 'login' | 'signup' | 'authentication-result' | 'order-update' | 'order-status' | 'nlweb_ask', required — Selects which canonical Forter operation shape this op simulates.
    - `data` unknown
  - DemoBatchEnvelope — Envelope form for /batch - equivalent to a bare array body.
    - `operations` DemoBatchOperationItem[], required
      - `id` string — Caller-assigned op id; echoed in the polling response so callers correlate.
      - `kind` 'order' | 'login' | 'signup' | 'authentication-result' | 'order-update' | 'order-status' | 'nlweb_ask', required — Selects which canonical Forter operation shape this op simulates.
      - `data` unknown

## Response `202`

Batch accepted. Poll the URL in the Location header until `status=completed`.

- object
  - `object` 'batch_job', required
  - `job_id` string, required
  - `status` 'pending' | 'completed', required
  - `op_count` integer
  - `poll_url` string, uri, required
  - `retry_after_seconds` integer, required
  - `created_at` string, date-time
  - `ops_accepted` object[]
  - `availability` object

## Other responses

- `400` — Bad Request (Often missing a required parameter)
- `405` — Method Not Allowed. Use POST to create a batch, GET to discover the surface.

---

[API](https://skmtc.net/forter/apis/forter-api.md) · [All operations](https://skmtc.net/forter/apis/forter-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/forter/forter-api/revisions/d7b02e919b34/schema)
