Skip to main content
Submit multiple profile URLs in one request. The response returns a batch_id immediately; each profile is processed independently and delivers its own webhook. The scan mode is selected by the path you call — every profile in the batch runs in that mode: Both modes accept the same request body and return the same response shape (the scan_mode field echoes which one ran). See Scan modes for the full comparison.

Request body

string[]
required
Array of creator profile URLs. Each URL must be a valid HTTP or HTTPS URL.
string
HTTPS endpoint Tumban will POST each result to as profiles complete. Optional: if omitted, Tumban falls back to the organization’s default_callback_url. If neither is set, the batch still runs and individual scans can be polled via GET /api/v2/scans/{scan_id} — no webhooks are sent.
object
default:"{}"
Arbitrary JSON object applied to every profile in the batch. Echoed back on each per-profile webhook payload.

Response

string
required
UUID of the batch. Use it to fetch aggregate progress via GET /api/v2/batches/{batch_id}.
string
required
Always processing on submission. See Status values.
integer
required
Count of profiles accepted in the batch.
string
required
ISO 8601 UTC timestamp of when Tumban accepted the batch.
string
required
ISO 8601 UTC timestamp of the expected completion time. Scales roughly linearly with batch size at the deployment’s concurrency cap.
string
required
Which mode ran for every profile in the batch: deep or quick. Echoes the endpoint you called.
boolean
Present and true only when the batch was partially accepted because the org’s daily_scan_limit had remaining capacity for fewer profiles than were requested. Absent (or null) when every submitted URL was accepted.
integer
Present only when daily_limit_truncated is true. The number of trailing profile URLs from the request that were not queued for scanning. The first total_profiles URLs (in submission order) were accepted; the last profiles_skipped URLs were dropped. Resubmit the remainder after the daily limit window resets (00:00 UTC).

Example

To run a quick batch instead, call /api/v2/batch/quick with the same body. The response is identical except scan_mode is "quick".
The batch’s scan_ids are not returned in the response. Read each per-profile result via the webhook callback or by querying GET /api/v2/batches/{batch_id} for aggregate progress.

Example — partial acceptance

When the org’s daily_scan_limit has capacity for fewer profiles than were requested, the batch is accepted with the leading N profiles only and the response sets daily_limit_truncated and profiles_skipped. Worked example. Submit 50 URLs with 30 remaining in the daily quota → the first 30 URLs (in submission order) are queued; the last 20 are dropped:
total_profiles is the count actually queued (30), not the count submitted (50). To recover the skipped URLs, take the last profiles_skipped entries from your original profile_urls array — in the same order — and resubmit them after the next daily window opens at 00:00 UTC.

Errors