Improvado Embedded API v3
Improvado Embedded API V3 provides programmatic access to data extraction, transformation, and loading capabilities.
Authentication
This API supports multiple authentication methods depending on the endpoint:
Basic Authentication
Used for workspace-agnostic operations such as:
- Creating access tokens (
POST /api/v3/token) - Listing workspaces (
GET /api/v3/workspaces) - Managing workspaces (
POST /api/v3/workspaces,GET /api/v3/workspaces/{id},PUT /api/v3/workspaces/{id}) - Getting iframe URLs (
POST /api/v3/get_iframe_url) - Listing available recipes (
GET /api/v3/recipes/) etc.
Format: Authorization: Basic <base64(username:password)>
Bearer Token Authentication
Used for workspace-scoped operations after obtaining a token from /api/v3/token. The token is scoped to a specific workspace.
Format: Authorization: Bearer <token>
Cookie Authentication
Alternative to Bearer token for browser-based integrations. When using cookie authentication, you must include the workspace ID in the request header.
Cookie: dts_session_id=<session_token>
Required Header: X-IM-WORKSPACE-ID: <workspace_id>
Workspace Scoping
Most API operations are workspace-scoped. After authenticating with Basic Auth, obtain a workspace-specific token using POST /api/v3/token with the desired workspace_id. This token provides access only to resources within that workspace, ensuring isolation between different customers or projects.
Errors
The automated recipe operations under /api/v3.1/automated-recipe* and
GET /api/v3.1/connections/{connection_id}/accounts/ return errors as
{"code": "...", "message": "...", "details": {...}}. Branch on code, never on the
message text. See Errors for the catalogue of codes and the shape of details.
All other operations return errors as {"detail": "error description"}.
- Provide username/password credentials
- Complete OAuth flows
- Configure additional connection parameters
- Create connection via iframe (provides OAuth or credential input)
- Validate connection status
- Use connection to create extracts
- Monitor connection health and refresh tokens as needed
- Available fields from a data source
- Default extraction settings and parameters
- Supported date ranges and filters
- Which connection and account to extract from
- Which extract template to use
- Custom field selections and filters
- Schedule and date range configuration
- Where to store the extracted data (data table)
- Create extract with desired configuration
- Extraction runs automatically on schedule or on-demand
- Data is stored in the associated data table
- Monitor extraction status and history
- Data warehouses (Snowflake, BigQuery, Redshift)
- Databases (PostgreSQL, MySQL)
- File storage (S3, Google Cloud Storage)
- Business intelligence tools
- Authentication credentials for the destination
- Target configuration (database, schema, table naming patterns)
- Load behavior settings (append, replace, upsert)
- Path and formatting rules
- Source data table selection
- Destination connection and target location
- Load schedule and frequency
- Data transformation and mapping rules
- Load mode (full refresh, incremental, etc.)
- Creating and managing data source connections (OAuth flows, credential input)
- Configuring destination connections
- Managing connection settings and permissions
- List system + custom roles (each role carries its assigned
user_count). - Fetch the curated permission catalog: a stable, ordered list of product layers with
permissions, including human-readable
titleanddescriptionfor each entry. - Create, rename, edit, and delete custom roles. System roles are read-only.
- List users currently assigned to a role for impact preview.
reassigned_users_count.
All Roles endpoints require an agency-chief Basic Auth credential and the can_use_embedded_api
flag enabled for the agency.- Separate resources for different customers or projects
- Maintain data isolation and security boundaries
- Control access through workspace-scoped tokens
- Organize resources by environment (dev, staging, production)
- Setting up end-to-end data pipelines (source → extract → load → destination)
- Configuring multiple related extracts at once
- Applying best-practice configurations
/api/v3/automated-recipe-templates/ and /api/v3/automated-recipes/ operations in
this tag are deprecated. They keep working until they are switched off, and we will
announce the date in advance. See Moving recipes to v3.1 for what
changes between the two versions, and Deploying recipes for the current flow.
Two operations in this tag are not automated recipes and are not deprecated:
List agency recipes (GET /api/v3/recipes/) and Enable recipe in a workspace
(POST /api/v3/workspaces/{id}/recipes). They use Basic authentication, work with the
recipes available to your agency rather than with automated recipes, and have no v3.1
replacement.GET /api/v3.1/automated-recipe-templates/- pick a template.POST /api/v3.1/automated-recipes/- create the recipe. It is created empty.PUT /api/v3.1/automated-recipes/{recipe_id}/- supply data sources, connections and accounts. This step is mandatory.POST /api/v3.1/automated-recipes/{recipe_id}/build/- start the build, then pollGET /api/v3.1/automated-recipes/{recipe_id}/untilstateisready_to_workorfailed.
301 means the slash is missing from your URL.
With a bearer token the workspace is the one the token was issued for; with cookie
authentication, send the workspace id in the X-IM-WORKSPACE-ID header.
All errors use one envelope - see Errors.
See the Deploying recipes guide for the full flow.- Register an endpoint with the URL of your receiver and the event types you care about.
Improvado returns an
idand asecret, and the endpoint is created inunverifiedstatus. - Verify ownership by calling the verify action. Improvado sends a GET request to your URL with
X-Improvado-Verify-TokenandX-Improvado-Challengeheaders. Your receiver must respond with HTTP 200 and the challenge value as the response body. After successful verification the endpoint moves toactive. - Receive events. Improvado POSTs JSON payloads
{id, type, timestamp, data}to your URL. Each request is signed with HMAC-SHA256 in theX-Improvado-Signatureheader (using the endpoint's secret) and includesX-Improvado-Idempotency-Keyfor safe retry handling. - Rotate the secret at any time. Rotation invalidates the previous secret immediately and resets the
endpoint to
unverifieduntil you re-verify.
[0s, 2s, 5s, 10s]. Receivers should aim to
respond within a few seconds and return 2xx for successful processing.
