Skip to main content
If you are building a backend integration, internal tool, agent runtime, or custom frontend, this is the service you will use most often. It is the user-facing control plane for task definitions (including modular search, crawl, scrape, and API-call steps), execution lifecycle, templates, results, datasets, and stable media access.
Rust snippets use ureq and serde_json (ureq = { version = "2", features = ["json"] }, serde_json = "1"). Go snippets use the standard library only. Tab titles match Authentication and the Quickstart so your language choice stays in sync.

What you will build

In this guide, you will build a minimal programmatic integration that can:
  1. Authenticate with a bearer token
  2. Create a task
  3. Trigger execution
  4. Poll execution status
  5. Export results

Before you begin

How Task Service fits into the platform

Response model

Most JSON endpoints return a success envelope with the typed payload under data:
Errors use success: false and an error object with code and message (see API reference overview and HTTP errors and exceptions). When building a client, parse and check the envelope first, then read fields from data. A few routes (for example GET …/results/export) stream files instead of JSON envelopes—treat those as raw HTTP bodies.

Main endpoint groups

Build a minimal client

These helpers assume TITAN_API_URL is the origin (for example https://api.webscraping.titannet.io) and append /api/v1.

Create a task programmatically

The table below describes the classic extraction shape most teams start with: known URLs plus an objective and output schema. Titan also supports modular and multi-step tasks where urls, output_schema, and other fields are expressed per action or inside an execution_plan instead of only at the top level. For those patterns, see Action types overview and the Task Service operations in the API Reference tab.

Example: create a single-run task

Example: create a scheduled task

Trigger and monitor execution

Run a saved task

The JSON response wraps an ExecutionResponse in data; use data.id as the execution UUID for later GET /api/v1/executions/:id calls.

Poll execution state

Read data.status from the envelope on each poll.

Export results

When the execution reaches a terminal status such as completed, switch from execution monitoring to result access.

Result metadata (JSON envelope)

Export as JSON file (raw body, no envelope)

Download as CSV

A full client flow

Copy the Build a minimal client snippet for your language, then run the flow below (same titanRequest / titan_json names where applicable).

Best practices

Troubleshooting

Next steps