Create mixed bulk job

Enqueues screenshots or scrapes in a single batch. Provide `urls` (simple list) or `items` (per-item config), not both. Webhook deliveries include `X-ByteKit-Event: bulk.completed` so receivers can dispatch on the header without parsing the body shape.

POST
/v1/bulk

Authorization

AuthorizationRequiredBearer <token>

API key. Manage keys from the dashboard at app.bytekit.com.

In: header

Request Body

application/jsonRequired
urlsarray<string>

Simple URL list. Provide urls OR items, not both.

itemsarray<object>

Per-item configs. Provide urls OR items, not both.

defaultsobject

Default behaviour applied to every entry unless the item overrides it.

webhook_urlRequiredstring

Webhook endpoint URL (HTTPS only; http:// rejected with 400 invalid_url, reason scheme_unsupported)

Pattern: "^https://"Format: "uri"
webhook_secretstring
metadataobject

Arbitrary key-value metadata. Max 4096 bytes when JSON-serialized.

curl -X POST https://api.bytekit.com/v1/bulk \
  -H "Authorization: Bearer sk_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"url":"https://example.com","type":"screenshot","device":"mobile","format":"png","quality":90,"full_page":true,"dark_mode":true,"viewport":{"width":1280,"height":720}},{"url":"https://example.org","type":"scrape","formats":["markdown","html"],"include_html":true,"wait_until":"networkidle","wait_for_selector":"#main","delay_ms":500,"metadata":{"item_tag":"hero"}}],"defaults":{"type":"screenshot","device":"desktop","country":"US","formats":["rawHtml"],"device_scale_factor":2},"metadata":{"campaign":"q3"},"webhook_url":"https://hooks.example.com/bytekit"}'

Bulk job accepted.

{
  "id": "bulk_01j9abc123",
  "status": "processing",
  "total": 0,
  "completed": 0,
  "failed": 0,
  "created_at": "2019-08-24T14:15:22Z",
  "completed_at": "2019-08-24T14:15:22Z",
  "total_credits_charged": 0,
  "estimated_credits": 0,
  "webhook_url": "string"
}