Queue a published workflow run with a scoped browser API key

Queue a published workflow run with a scoped browser API key

POST
/api/v1/browser/projects/{projectId}/environments/{environmentId}/workflows/{workflowId}/runs

Queue a published workflow run with a scoped browser API key

Authorization

BrowserWorkflowApiKey
headerX-API-Key<token>

Project- and environment-scoped browser workflow API key.

Path Parameters

projectId*string
Formatuuid
environmentId*string
Formatuuid
workflowId*string
Formatuuid

Header Parameters

Idempotency-Key?string

Optional. Generate a unique value before a write and retain it for an exact-body retry; replay is free and a different body returns 409 IDEMPOTENCY_CONFLICT.

Length8 <= length <= 200

Request Body

application/json
  1. body
workflow_version_id*string
Formatuuid
variables?
Default{}
priority?integer
Range0 <= value <= 9
Default0
proxy_type?ProxyNetworkType

Requested proxy class. Premium is only used when explicitly selected and requires a configured plan price and available premium connection.

Value in"datacenter""residential""premium"
max_credits_per_request?integer

Optional hard credit ceiling for this run. It includes workflow execution, CAPTCHA, and measured proxy traffic. Execution stops with budget_exhausted when a complete result cannot fit within the remaining budget.

Range1 <= value
session_state?

One-run browser storage state. It is encrypted at rest, never returned, and deleted when the run reaches a terminal status.

Response Body

Queued durable workflow run Error body uses the documented PublicError DTO.

application/json
  1. response
id*string
Formatuuid
project_id*string
Formatuuid
environment_id*string
Formatuuid
workflow_id*string
Formatuuid
workflow_version_id*string
Formatuuid
proxy_type*|

Proxy class selected when the run was created; null for legacy runs that predate class selection.

max_credits_per_request*|

Request-wide credit ceiling fixed at admission; null for legacy runs without a configured cap.

Range1 <= value
requested_by?integer|null
status*string
Value in"queued""running""succeeded""failed""cancelled""expired"
execution_kind*string
Value in"workflow""cdp"
variables*
result*|null
action_trace*array<>
Itemsitems <= 100
result_metadata*
quality_state*string
Value in"pending""validated""unavailable"
error_code*|

Terminal workflow error, including budget_exhausted and PROXY_CLASS_UNAVAILABLE when applicable.

error_message*string|null
attempt_count*integer
max_attempts*integer
priority*integer
created_at*string
Formatdate-time
started_at*|
Formatdate-time
finished_at*|
Formatdate-time
expires_at*string
Formatdate-time
curl -X POST 'https://api.runharvester.com/api/v1/browser/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/environments/497f6eca-6276-4993-bfeb-53cbbbba6f08/workflows/497f6eca-6276-4993-bfeb-53cbbbba6f08/runs' \  -H 'Content-Type: application/json' \  -d '{  "workflow_version_id": "9c9b9538-e27b-4d40-a8ae-a50aa2ea701b",  "variables": {    "url": "https://example.com"  },  "proxy_type": "premium",  "max_credits_per_request": 100}' \  --header "X-API-Key: ${RUNHARVESTER_BROWSER_API_KEY:?Set your Browser Workflow API key}" \  --header "Idempotency-Key: ${RUNHARVESTER_IDEMPOTENCY_KEY:?Set a unique key for this submission; reuse it for retries}"
{  "id": "9a20bd58-ed33-4a5b-b63f-b52bb1a62248",  "status": "pending"}