---
title: "Feed a project's seasons from a connected product."
method: PUT
path: "/story-projects/{projectId}/integration-feed"
tags: ["Integrations"]
---

# Feed a project's seasons from a connected product.

`PUT /story-projects/{projectId}/integration-feed`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/story-projects/{projectId}/integration-feed`
- Auth: HTTP bearer

Feed (`feeding: true`) or withdraw (`feeding: false`) a project from a product. No season has to be live: every current and future internal season reads every place chosen in the product unless the season has its own rule (PUT /season-runs/{runId}/integration-feed); a season meant for outside readers still reads only places picked for it. Items found before a season starts wait for it. Every item still waits for someone to keep it. Owners and admins, on their own projects. Scope: `story:write`. Free.

## Request body

- ProjectIntegrationFeedRequest
  - `providerSlug` string, required: The product: `notion`, `slack`, `github`, `linear`, …
  - `feeding` boolean, required: True feeds the project's seasons from it; false withdraws (nothing already found is removed).

## Response `200`

The project's feeds now, and what changed.

- ProjectIntegrationFeedResult
  - `projectId` string, required
  - `projectName` string, required
  - `feeds` object[], required
    - `providerSlug` string, required
    - `label` string, required
    - `integrationId` string, nullable, required: The organization's connection, or null when the product is not connected (nothing is read until it is).
    - `statusLine` string, nullable, required: The connection's one status line.
    - `itemsHeld` integer, required: Items found while the project had no season, waiting for its next one.
  - `liveSeasons` integer, required: Live seasons the feeds reach now; zero means found items wait for the first season.
  - `itemsHeld` integer, required
  - `summary` string, required: One plain line for a chat or a CLI.
  - `providerSlug` string, required
  - `feeding` boolean, required
  - `message` string, required

## Other responses

- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `404`: `project_not_found`.
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/64c1102ccb2f?raw)
