---
title: "Create a source (async)"
method: POST
path: "/sources"
---

# Create a source (async)

`POST /sources`

## Request

- Base URL: `https://www.merchkit.com/api/v1`
- URL: `https://www.merchkit.com/api/v1/sources`
- Auth: HTTP bearer

Schedules scrape-and-create: the processing pipeline fetches the URL and creates the source entity WITH its `processed_content` — there is no "create empty, fill later" path. Returns `202 {job_id, status: "queued"}`; poll `GET /jobs/{job_id}` until `completed`, then find the source via `GET /sources?filter[url]=<url>`. Attaching to a product is a `data_sources` reference write on the product (`PATCH /products/{id}`).

Scope: `write:sources`.

## Request body

- object
  - `attributes` object, required
    - `url` string, uri, required: The URL to scrape and process.

## Response `202`

Processing scheduled; poll the job.

- object
  - `data` object
    - `job_id` string, uuid, required
    - `status` 'queued', required

## Other responses

- `400`: Validation failed (missing or invalid `url`).

---

[API](https://skmtc.dev/merchkit/apis/merchkit-api.md) - [All operations](https://skmtc.dev/merchkit/apis/merchkit-api/llms.txt) - [OpenAPI document](https://skmtc.dev/merchkit/apis/merchkit-api/revisions/3062ca814757?raw)
