# Compatibility and supporting endpoints

These routes support existing integrations. Use the [catalogue reference](/docs/api.md)  to choose a scraping API. All routes below require a Browsable API key and access to the owning team.

## Legacy Instagram requests

`POST /v1/instagram/scrape` is a compatibility route. For new integrations, use [Instagram public profile](/docs/api/endpoints/post-instagram-public-profile.md)  or [Instagram feed](/docs/api/endpoints/post-instagram-feed.md) . The feed API uses a connected website account.

The legacy route accepts either `username` for a public profile, or `sessionId` plus `csrfToken` and optional `userId` for an authenticated feed. It accepts `count` (default 12) and `after`. Supplying both modes, or neither, returns HTTP 400. It uses a legacy response format rather than the standard task run envelope. Keep credentials on your server; migrate to the connected-account API for new work.

## Authentication-flow status

`GET /v1/auth/invocations/{id}` requires `website_logins.manage`. Pass an invocation ID from an authentication flow, rather than an account or task ID. It returns an `invocation` object with `id`, `status`, `provider`, `domain`, `platform`, `hosted_url`, `live_view_url`, `expires_at`, `flow_status`, `step`, `failure_code` and `failure_message`. Links and failure fields may be null. A missing or inaccessible invocation returns 404.

For account connection setup and cancellation, see [website logins](/docs/api/website-logins.md) , including `/v1/website-logins/invocations/{id}`.

## Integration image assets

`POST /v1/integration-assets` requires `tasks.run`. Send PNG, JPEG or WebP bytes with the matching `Content-Type`. The maximum size is 20 MiB, and the file contents must match the declared type. Alternatively send `application/json` with a `url` from an allowed import origin; arbitrary external URLs are not accepted. Invalid images and unavailable imports return HTTP 400 with `error.code` and `error.message`.

A successful upload returns HTTP 201 with `assetId`, `mimeType`, `sizeBytes`, `url` and `expiresAt`. Default retention is 30 days; use the returned expiry as authoritative. Assets are private to the team.

`GET /v1/integration-assets/{id}` requires `runs.read` and returns the image bytes. Add `?download=1` to request an attachment, or `?format=json` for a signed asset reference. An expired or unavailable asset cannot be loaded; upload a replacement.

## Cancel a supported integration run

`POST /v1/runs/{id}/cancel` requires `tasks.run`. Supply the run UUID in the URL; no request body is required. This route supports integration runs with cancellation support. It is not a universal cancel route for every scraper or downloader.

Success returns `run_id`, `status`, `run_status` and `cancelled`. Invalid run identities return 400. Missing/inaccessible runs return 404; an unsupported cancellation returns 409. Inspect the returned state rather than assuming the work stopped immediately.

---
Source: https://browsable-api-ux-staging.pages.dev/docs/api/compatibility
