---
title: "Scan a website"
method: POST
path: "/marketing/sources"
tags: ["marketing"]
---

# Scan a website

`POST /marketing/sources`

## Request

- Base URL: `https://api.gogoscreen.com/api/v1`
- URL: `https://api.gogoscreen.com/api/v1/marketing/sources`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Read a public website and keep what it found — the pages, the words and the pictures — as a versioned manifest a marketing video can be built from. Scanning costs no video time; the EXPORT is what charges. Answers 202 with a `Location` pointing at the source; poll it until `state` is terminal, then `marketing.generations.create` to turn it into a project. One scan at a time per account.

## Headers

- `Idempotency-Key` string, required

## Request body

- object
  - `demo` object: A demo account to sign in with, so the scan can see pages behind a login: { loginUrl, username, password, targetUrls[] }. Encrypted at rest and deleted after the scan.
  - `url` string, required: The website to read. Public addresses only.

## Response `200`

The work was already known — the service recognised this key on its own record and queued nothing new. Answered when the 24-hour idempotency claim has expired but the work has not.

- object
  - `created` boolean, required
  - `dispatched` boolean, required: Whether the job has started. False means it is accepted and will start shortly; it is not a failure.
  - `operationId` string, required: The scan attempt. Poll the SOURCE, not this: a source has many scans and one current manifest.
  - `resource` object, required

## Other responses

- `202`: The work was queued. Poll the resource at `Location`. A retry with the same Idempotency-Key answers this again, with the same body and the same `Location`, plus `Idempotent-Replayed: true`.
- `400`: `validation_failed` — That request is not valid. · `idempotency_key_required` — This operation needs an Idempotency-Key header: a string of up to 128 characters, unique to this request, so a retry cannot do the work twice. · `url_malformed` — That address could not be read as a URL. · `url_invalid` — That address is not one this API will fetch. · `url_private` — That address resolves to a private network and will not be fetched. · `source_refresh_url_mismatch` — A refresh must name the same address the source was created with. · `website_demo_invalid` — That demo login is not valid. · `site_not_allowed` — This website can't be used: public platforms and sensitive-topic sites aren't allowed. If you think this is a mistake, write to support@gogoscreen.com or use "Talk to a person": support can allow a site by name.
- `401`: `unauthorized` — Authentication is required.
- `403`: `forbidden_scope` — This credential does not carry the scope this operation needs.
- `404`: `not_found` — No such resource. · `source_not_found` — No such source. · `source_owner_not_found` — No such account.
- `409`: `idempotency_conflict` — That idempotency key was already used with a different request. · `idempotency_in_progress` — That idempotency key is still being processed. · `conflict` — That request conflicts with the current state. · `source_inspection_busy` — A scan is already running on this account. Wait for it, or cancel it. · `source_idempotency_conflict` — That idempotency key was already used with a different scan. · `source_owner_unavailable` — That account cannot start new work. · `source_export_in_flight` — An export is still being cut from that source. Cancel it first. · `source_inspection_stopping` — That scan is still stopping. Try again in a moment.
- `410`: `source_deleted` — That source has been deleted.
- `413`: `payload_too_large` — That request body is too large.
- `415`: `unsupported_media_type` — That content type is not supported.
- `429`: `rate_limited` — Too many requests. Try again shortly.
- `500`: `internal_error` — Something went wrong. Try again.

---

[API](https://skmtc.dev/gogoscreen/apis/gogoscreen-api.md) · [All operations](https://skmtc.dev/gogoscreen/apis/gogoscreen-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gogoscreen/apis/gogoscreen-api/revisions/2fd812319d75?raw)
