Skip to main content
The search action type is for discovery-first work: turn queries and ranking into candidate URLs or documents before you lock onto specific pages. It pairs with scrape or crawl when the hard part is “what should we read?” rather than only “extract these known URLs.”
Examples use TITAN_API_URL (Task Service origin, no /api/v1 suffix) and TITAN_TOKEN. Tab titles match other integration pages. Rust: ureq + serde_json. You need tasks:write (and related scopes for run and read paths).
  • You have questions or keywords, not a fixed PDP list.
  • You want fresh candidates from the open web on each run.
  • You will downstream either crawl for more coverage or scrape into a stable schema.

Inputs and wiring

  • With input_source: static_urls, seeds usually live in the task’s urls list (validated per action rules).
  • In multi-step plans, a later scrape step often sets input_source: previous_step so discovered URLs flow into extraction.

Single-action example (POST /api/v1/tasks)

The exact limits and payload keys depend on your template and script contract—treat the JSON below as structural, not a guarantee of field names.

Multi-step example (search → scrape)

Create a task whose execution_plan has two steps: search with static_urls, then scrape with previous_step and an output_schema carried on the scrape step (self-contained plan). Sketch:
Do not send top-level action_type or output_schema when the body is an execution_plan-only create; the plan must include everything each step needs.

Submit the multi-step task (same body via API)

Save the JSON sketch as search-scrape-plan.json, or build the same object in memory in your language.

Run and inspect

Run task

Get task

Dry-run a plan without persisting a task:
Replace the empty steps array with a real plan when you call this for real.