# Driftstack > iPhone Safari browsers in the cloud. Each one runs WebKit, the engine inside Safari, on Macs in a data centre, so what a page measures in the browser comes from that engine. A program or an AI agent starts a session through the HTTPS API or an SDK, then drives it with tasks in plain words or with exact steps. Read "Driftstack for AI agents" first: it says which calls to use, in what order, and what to do when something goes wrong. Every public operation is in the OpenAPI document. Never invent an endpoint or a field: if it is not in these docs or the OpenAPI document, it does not exist. ## Start here - [Driftstack for AI agents](https://docs.driftstack.io/guides/ai-agents/): What an AI agent, or the person building one, needs to use Driftstack well — when to send a task and when to send exact steps, the session lifecycle, costs and limits, retries, handing a check to a person, profiles, proxies and webhooks. - [Task recipes](https://docs.driftstack.io/guides/task-recipes/): Short, complete programs for the jobs an AI agent does most with Driftstack — extract a fact, fill a form, handle a webhook, reuse a saved profile, use a proxy, page through a list, recover from 429 and hand a check to a person. - [Quickstart](https://docs.driftstack.io/quickstart/): From signup to your first AI-driven iPhone Safari session — working examples in TypeScript, Python, or Go. - [Quickstart (curl)](https://docs.driftstack.io/quickstart-curl/): Run your first AI-driven iPhone Safari session with nothing but curl — create an agent session through your proxy, give it a task, read the answer, and close it, straight against the HTTP API. ## Guides - [Run AI tasks from your code](https://docs.driftstack.io/guides/run-ai-tasks-from-code/): Hand a task to the AI agent from TypeScript, Python, Go or curl — start a session on a saved profile, send the task, read the answer, approve or answer when it asks, stop it, and close it. Covers errors, safe retries, limits and who pays for the AI. - [Session lifecycle](https://docs.driftstack.io/guides/session-lifecycle/): The full lifecycle of a Driftstack session — create, drive, capture, destroy, and how concurrency and duration caps shape the boundaries. - [Concurrency & backpressure](https://docs.driftstack.io/guides/concurrency/): How many sessions you can run at once on each tier, the 429 you get when you hit the cap, and how to back off cleanly in each SDK. - [Profile management](https://docs.driftstack.io/guides/profile-management/): Persistent profiles in Driftstack — create, list, reuse across sessions, and delete. Which device each profile uses, and how many profiles your tier allows. - [Live video for agent sessions](https://docs.driftstack.io/guides/live-video/): Walk-through for embedding a live video stream from a running agent session in a browser or desktop app using LiveKit WebRTC. Covers token mint, connect, render, and reconnect. ## API reference - [Agent sessions](https://docs.driftstack.io/api/agent-sessions/): AI-driven browser automation — turn plain-language messages into browser steps, read the outcome, and close the session. - [Profiles](https://docs.driftstack.io/api/profiles/): Manage saved browser profiles — create, list, get, patch, clone, delete. Tier-cap enforced at create + clone. - [Account proxies](https://docs.driftstack.io/api/proxies/): Register your own SOCKS5, HTTP, OpenVPN, or WireGuard proxies against your account and route a session's traffic through a SOCKS5, OpenVPN, or WireGuard one. Secrets are encrypted at rest under your account key and never echoed back. - [Device profiles](https://docs.driftstack.io/api/archetypes/): Discover the currently selectable Driftstack device, iOS, and browser combinations from the public API. - [Who am I](https://docs.driftstack.io/api/whoami/): Check which account, key, tier and scopes an API key has with GET /v1/whoami. - [Usage](https://docs.driftstack.io/api/usage/): Quota counters, current-period totals, and a daily time series — the /v1/usage and /v1/usage/series endpoints. - [OpenAPI document](https://api.driftstack.dev/openapi.json): Every public operation, with its request and response schemas. ## Rules every request follows - [Error reference](https://docs.driftstack.io/reference/errors/): Every Driftstack RFC 9457 problem-type — what it means, the SDK error class for each language, status code, and whether to retry. - [Rate limits](https://docs.driftstack.io/reference/rate-limits/): Per-tier rate limit defaults — token-bucket capacity, refill rate, and what happens when you hit the cap. - [Idempotency keys](https://docs.driftstack.io/reference/idempotency/): Stripe-pattern Idempotency-Key header — safely retry POST requests without minting duplicates. Which endpoints honour it, scope semantics, lifetime, and best-practice generation. - [Pagination](https://docs.driftstack.io/reference/pagination/): Cursor-based pagination across every list endpoint — request shape, response shape, opaque cursor semantics, and the canonical drive-to-completion loop in TS / Python / Go. - [API key scopes](https://docs.driftstack.io/reference/scopes/): Full reference of API key scopes — broad, granular, and the broad-satisfies-granular rule. ## Webhooks - [Webhook endpoints](https://docs.driftstack.io/webhooks/endpoints/): Subscribe to events, list / patch / delete endpoints, send test deliveries, and rotate signing secrets — the /v1/webhooks resource. - [Webhook events catalog](https://docs.driftstack.io/webhooks/events/): Reference for every webhook event type the Driftstack API emits — payload shapes, signature verification, retry policy. ## SDKs - [SDK installation](https://docs.driftstack.io/sdk/installation/): Installation and configuration for the Driftstack TypeScript, Python, and Go SDKs. - [TypeScript / Node.js quickstart](https://docs.driftstack.io/sdk/typescript-quickstart/): 5-minute getting-started for the @driftstack/sdk TypeScript client. Install, auth, first session, error handling, and next steps. - [Python quickstart](https://docs.driftstack.io/sdk/python-quickstart/): 5-minute getting-started for the driftstack-sdk Python client. Sync + async, install, auth, first session, error handling, and next steps. - [Go quickstart](https://docs.driftstack.io/sdk/go-quickstart/): 5-minute getting-started for the driftstack-sdk Go client. Install, auth, first session, idiomatic error handling, and next steps. - [SDK error handling](https://docs.driftstack.io/sdk/error-handling/): Typed error hierarchy across the TypeScript / Python / Go SDKs; categorical try/catch patterns; retry semantics. ## Optional - [All developer docs in one file](https://docs.driftstack.io/llms-full.txt): Every page above and the rest of the developer docs, as Markdown. - [Help center](https://docs.driftstack.io/help/): Fixes for what a person sees in the desktop app, sorted by topic. - [Sessions](https://docs.driftstack.io/api/sessions/): Create + drive sessions step by step — navigate, interact, wait, capture, extract, search, login, get-state, destroy. Tier-gated concurrency. On hosted Driftstack only agent sessions load pages. - [Data residency](https://docs.driftstack.io/reference/data-residency/): Where Driftstack stores customer data — what is stored in the EU, what can replicate or run outside the EU, the region account preference, and deletion.