Create website setup job

POST
/jobs/setup

Create a setup job for the URL, country and currency; the analysis starts right away unless the website exists already. An open setup job of the same website in the project is returned instead, with HTTP 200. A too-large website gives a failed job with the error code WEBSITE_TOO_LARGE. See POST /contact-requests.

The job takes one of the free website analyses of the month. After them, the analysis is paid from the credit: its price is held and charged once the website is in the project. A failed analysis costs nothing.

The setup is for the whole website at the domain of the URL. It ignores the path and the query. To scrape only some products, create a URL scrape after the setup (POST /jobs/scraping with urls).

A project without localization gets the country and currency of the job.

Authorization

HTTPBearer
headerAuthorizationBearer <token>

An API key

Request Body

application/json
  1. body
url*string
country*string
currency*string
project_id*string

Response Body

The open setup job of the same website in the project, instead

application/json
  1. response

A setup job with its analysis and training progress.

job_id*string
job_type*string
status*JobRequestStatus

The lifecycle of a job. Each job type runs in its own lane.

  • WEBSITE_SETUP: CREATED, ANALYZING, ESTIMATE_READY, TRAINING, COMPLETED. The analysis and the training move the job on by themselves.
  • FULL_SCRAPE, URL_SCRAPE and MATCHING: AWAITING_APPROVAL (the user approves the quote), APPROVED, RUNNING, SETTLING (the charge), EXPORTING (the export files), COMPLETED.
  • FAILED ends a job of any lane; CANCELLED ends one that the user cancelled, or an idle one that expired.
Value in"CREATED""ANALYZING""ESTIMATE_READY""TRAINING""AWAITING_APPROVAL""APPROVED""RUNNING""SETTLING""EXPORTING""COMPLETED""FAILED""CANCELLED"
project_id*string
website_id?string|null
estimate?|null
approval?|null
settlement?|null
error?string|null
error_code?|null
contact_reason?|null
contact_request_id?string|null
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
finished_at?|null
url*string
country*string
currency*string
analysis_progress?|null
train_progress?|null
curl -X POST 'https://api.deepscout.ai/v1/jobs/setup' \  -H 'Content-Type: application/json' \  -d '{  "url": "string",  "country": "string",  "currency": "string",  "project_id": "string"}'
{  "job_id": "string",  "job_type": "WEBSITE_SETUP",  "status": "CREATED",  "project_id": "string",  "website_id": "string",  "estimate": {    "currency": "string",    "unit_price_per_1000": "12.68",    "quantity": 0,    "total": "12.68",    "cap": "12.68",    "min_charge": "12.68",    "difficulty": "EASY",    "input_products": 0  },  "approval": {    "approved_by": "string",    "approved_at": "2026-09-16T12:30:00.000Z"  },  "settlement": {    "quantity": 0,    "currency": "string",    "amount": "12.68",    "capped": true,    "settled_at": "2026-09-16T12:30:00.000Z"  },  "error": "string",  "error_code": "WEBSITE_TOO_LARGE",  "contact_reason": "WEBSITE_TOO_LARGE",  "contact_request_id": "string",  "created_at": "2026-09-16T12:30:00.000Z",  "updated_at": "2026-09-16T12:30:00.000Z",  "finished_at": "2026-09-16T12:30:00.000Z",  "url": "string",  "country": "string",  "currency": "string",  "analysis_progress": {    "config": {      "state": "RUNNING"    },    "homepage": {      "state": "RUNNING"    },    "sitemap": {      "state": "RUNNING"    },    "size": {      "state": "RUNNING"    },    "sitemap_size": 0,    "is_ecommerce": true,    "product_type": "string",    "language": "string",    "products_estimate": 0  },  "train_progress": {    "pages": 0,    "pages_limit": 0,    "pages_estimate": 0,    "phase": "COLLECTING_PAGES",    "percent": 0  }}