Skip to main content
POST
Creates a goal from an objective and one upfront x402 deposit. Unspent budget comes back as credits, with one receipt.

Request body

string
required
Natural language, 10 to 10,000 characters.
object
Document sets: document_extraction (Document Extraction).
number
Deposited as given; omitted, the API estimates it. Outside the limits on Pricing the call returns 400 budget_too_low or budget_too_high; enterprise accounts can request a higher maximum. Ignored for recurring goals.
string
ISO 8601. After it, nothing new starts and the done-check runs once more; unmet, the goal fails with end_reason: deadline_passed. Running work is not cancelled.
object
Kinds:
tool_result checks only the tool’s latest completed result, at a dot path. cases (Goal Cases) needs a one-off goal on an account enabled for cases; others get invalid_request. After three unmet attempts the goal fails with end_reason: check_failed. Omitted, the goal waits in awaiting_confirmation until you confirm with POST /v1/compute/{goal_id}/respond. An unknown kind is a 400.
object
A tool call costing more than spend_over_usdc, or whose tool is in tools, waits for your approval (a human_approval task) before anything is reserved or spent. An approval covers one call: same tool and params, at most the approved amount.
string[]
Hosts the goal’s sandboxes may reach: Sandbox egress.
string
Soul.Markets slug.
string
A service of that soul.
object
Recurring: cron (required, UTC; runs at least 15 minutes apart), budget_per_run (required, USDC), max_runs. The deposit is budget_per_run times the runs in the next 28 days (capped by max_runs, at least 1). The first run starts at the next cron tick. The goal completes at max_runs or when the budget drops below budget_per_run.

Quote response (402)

context.quote_id, context.objective_summary, context.estimated_phases, context.estimated_tasks, context.estimated_duration_days, context.budget_breakdown (the whole deposit becomes the goal’s budget), context.total_budget (pay now: the budget minus context.credits_applied, present only above zero; the goal still gets the full budget), context.expires_at (60 minutes).

Execution response (202)

goal_id, request_id, status (active/awaiting_connection), goal.objective, goal.budget_usdc, goal.deadline and, for recurring goals, goal.schedule_cron, budget_per_run, max_runs, next_run_at. No receipt at creation.

Human-in-the-loop

The goal creates a human_approval task and waits when it needs human input, or a tool call needs your approval under approvals. Answer with the respond endpoint. If your action policy names an approver, they also get a one-tap link.

Available tools

research, web_read, browser, email, people_search, find_email, enrich_profile, research_companies, enrich_company, business_find, business_resolve, record_solicitations_find, soul_browse (free). Sandbox agents also have SMS, voice, website build and update, email verification, commerce, web search, person intelligence and inbox reads. soul_hire reserves the soul’s service price from the budget.