---
title: "Intake Source Create"
method: POST
path: "/v1/intake/sources"
---

# Intake Source Create

`POST /v1/intake/sources`

## Request

- Base URL: `https://api.storyflo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.storyflo.com/v1/intake/sources`
- Auth: none declared

Register a feed for a publisher. Status starts as ``pending`` —
operators flip to ``active`` once they've vetted the source. Until
then the intake worker skips it.

This is the **registration** the public discovery feed waits on:
once the first article ingested through any active source lands in
the ``articles`` table, the demo fallback flips off automatically.

## Query parameters

- `api_key` string, nullable

## Headers

- `x-storyflo-key` string, nullable
- `x-readout-key` string, nullable

## Request body

- IntakeSourceCreate
  - `publisher_id` string, required
  - `kind` string, required: rss | atom | api_pull | api_push
  - `feed_url` string, required
  - `tier` string: free | paid
  - `auth_header` string, nullable
  - `default_vertical` string, nullable
  - `poll_interval_minutes` integer

## Response `201`

Successful Response

- IntakeSourceView
  - `id` string, required
  - `publisher_id` string, required
  - `kind` string, required
  - `tier` string, required
  - `status` string, required
  - `feed_url` string, required
  - `default_vertical` string, nullable, required
  - `poll_interval_minutes` integer, required
  - `last_polled_at` string, nullable, required
  - `last_error` string, nullable, required
  - `created_at` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/storyflo/apis/storyflo-inference-router.md) · [All operations](https://skmtc.dev/storyflo/apis/storyflo-inference-router/llms.txt) · [OpenAPI document](https://skmtc.dev/storyflo/apis/storyflo-inference-router/revisions/c3a1a735ac7a?raw)
