Перейти к содержимому

API reference

Feedigy public API v1. Bearer tokens only; versioned path; cursor pagination; idempotent writes; signed event webhooks.

Start with the quickstart; limits, errors and retries are in the policies. The machine-readable contract is openapi.json (OpenAPI 3.1.0, version 1.0.0).

Base URLs and auth

EnvironmentBase URL
Productionhttps://api.feedigy.com/v1

Create a token in Settings → API. Send it as `Authorization: Bearer <token>`. No cookies, no CSRF.

Me

GET /me

Token ability: account:read

Response 200
FieldTypeDescription
dataobject
data.idinteger
data.emailstring
data.planstring | null
data.limitsobject
data.limits.api_requests_per_minuteinteger | null

Errors: 401, 403, 429, 503. See policies for the error envelope.

Feed

GET /feeds

Token ability: feeds:read

Parameters

NameInTypeDescription
typequerystringComma-separated feed types: original, smart, discovery, imported.
statusquery"active" | "inactive"Feed status.
searchquerystringSubstring search over feed titles.
tagquerystringComma-separated owned tag ids (1–50).
cursorquerystringOpaque signed cursor from the previous page meta. Omit for the first page.
per_pagequeryintegerPage size, 1–100. Default 25.
Response 200
FieldTypeDescription
dataarray<object>
data[].idinteger
data[].public_idstring
data[].titlestring
data[].slugstring | null
data[].type"original" | "smart" | "discovery" | "imported"
data[].status"active" | "inactive"
data[].descriptionstring | null
data[].image_urlstring | null
data[].source_urlstring | null
data[].source_namestring | null
data[].settingsobject | nullDiscovery-catalog stats subset (language, per_week, partial, subscribers). Null for other feed types.
data[].item_countinteger
data[].created_atstring | null
data[].last_synced_atstring | null
data[].tagsarray<object>
data[].tags[].idinteger
data[].tags[].namestring
data[].tags[].slugstring
data[].tags[].colorstring | null
metaobject
meta.per_pageinteger
meta.next_cursorstring | null
meta.has_moreboolean

Errors: 401, 403, 404, 422, 429, 503. See policies for the error envelope.

POST /feeds

Token ability: feeds:write

Parameters

NameInTypeDescription
Idempotency-Key *headerstringRequired. 1–255 printable ASCII characters. Replaying a key returns the original response; a different request under the same key is a 422. Kept 24 h.

Request body

FieldTypeDescription
title *string
slugstring | null
descriptionstring | null
tag_idsarray<integer> | null
image_urlstring | null
Response 201
FieldTypeDescription
dataobject
data.idstring
data.public_idstring
data.titlestring
data.slugstring
data.typestring
data.statusstring
data.descriptionstring
data.image_urlstring | null
data.source_urlstring | null
data.source_namearray<any> | null | string | integer | object
data.settingsarray<any> | null
data.item_countstring
data.created_atstring | null
data.last_synced_atstring | null
data.tagsstring | object

Errors: 400, 401, 403, 409, 413, 415, 422, 429, 503. See policies for the error envelope.

GET /feeds/{feed}

Token ability: feeds:read

Parameters

NameInTypeDescription
feed *pathinteger
Response 200
FieldTypeDescription
dataobject
data.idinteger
data.public_idstring
data.titlestring
data.slugstring | null
data.type"original" | "smart" | "discovery" | "imported"
data.status"active" | "inactive"
data.descriptionstring | null
data.image_urlstring | null
data.source_urlstring | null
data.source_namestring | null
data.settingsobject | nullDiscovery-catalog stats subset (language, per_week, partial, subscribers). Null for other feed types.
data.item_countinteger
data.created_atstring | null
data.last_synced_atstring | null
data.tagsarray<object>
data.tags[].idinteger
data.tags[].namestring
data.tags[].slugstring
data.tags[].colorstring | null

Errors: 401, 403, 404, 429, 503. See policies for the error envelope.

PATCH /feeds/{feed}

Token ability: feeds:write

Parameters

NameInTypeDescription
feed *pathinteger
Idempotency-Key *headerstringRequired. 1–255 printable ASCII characters. Replaying a key returns the original response; a different request under the same key is a 422. Kept 24 h.

Request body

FieldTypeDescription
titlestring
slugstring
descriptionstring | null
status"active" | "inactive"
tag_idsarray<integer> | null
image_urlstring | null
Response 200
FieldTypeDescription
dataarray<any>

Errors: 400, 401, 403, 404, 409, 413, 415, 422, 429, 503. See policies for the error envelope.

DELETE /feeds/{feed}

Token ability: feeds:write

Parameters

NameInTypeDescription
feed *pathinteger
Idempotency-KeyheaderstringOptional. Same semantics as POST/PATCH when present; without it a repeat DELETE meets the already-deleted record as a 404.
Response 204 (no body)

Errors: 400, 401, 403, 404, 409, 413, 415, 422, 429, 503. See policies for the error envelope.

FeedItem

GET /feeds/{feed}/items

Token ability: feeds:read

Items of Original feeds additionally require the posts:read ability.

Parameters

NameInTypeDescription
feed *pathinteger
cursorquerystringOpaque signed cursor from the previous page meta. Omit for the first page.
per_pagequeryintegerPage size, 1–100. Default 25.
Response 200 (no body)

Errors: 401, 403, 404, 422, 429, 503. See policies for the error envelope.

Post

GET /posts

Token ability: posts:read

Parameters

NameInTypeDescription
feedqueryintegerRestrict to one owned Original feed.
statusquery"published" | "scheduled" | "draft"Post status.
cursorquerystringOpaque signed cursor from the previous page meta. Omit for the first page.
per_pagequeryintegerPage size, 1–100. Default 25.
Response 200
FieldTypeDescription
dataarray<object>
data[].idinteger | nullNull for smart-feed snapshot rows, which have no database id — `guid` is the stable identity there.
data[].feed_idinteger
data[].guidstring
data[].titlestring | null
data[].slugstring | null
data[].status"published" | "scheduled" | "draft"
data[].urlstring | null
data[].original_urlstring | null
data[].descriptionstring | null
data[].bodystring | null
data[].image_urlstring | null
data[].source_titlestring | null
data[].source_urlstring | null
data[].authorstring | null
data[].categoriesarray<string> | null
data[].published_atstring | null
data[].scheduled_atstring | null
data[].created_atstring | null
data[].updated_atstring | null
metaobject
meta.per_pageinteger
meta.next_cursorstring | null
meta.has_moreboolean

Errors: 401, 403, 404, 422, 429, 503. See policies for the error envelope.

POST /posts

Token ability: posts:write

Parameters

NameInTypeDescription
Idempotency-Key *headerstringRequired. 1–255 printable ASCII characters. Replaying a key returns the original response; a different request under the same key is a 422. Kept 24 h.

Request body

FieldTypeDescription
feed_id *integer
title *string
slugstring | null
bodystring | null
authorstring | null
tag_idsarray<integer> | null
image_urlstring | null
status *"published" | "scheduled" | "draft"
scheduled_atstring
Response 201
FieldTypeDescription
dataobject
data.idstring
data.feed_idstring
data.guidstring
data.titlestring
data.slugstring
data.statusstring
data.urlstring | null
data.original_urlstring | null
data.descriptionstring
data.bodystring
data.image_urlstring | null
data.source_titlestring
data.source_urlstring | null
data.authorstring
data.categoriesstring
data.published_atstring | null
data.scheduled_atstring | null
data.created_atstring | null
data.updated_atstring | null
data.feedobject | null | object
data.tagsstring | object

Errors: 400, 401, 403, 404, 409, 413, 415, 422, 429, 503. See policies for the error envelope.

GET /posts/{post}

Token ability: posts:read

Parameters

NameInTypeDescription
post *pathinteger
Response 200
FieldTypeDescription
dataobject
data.idinteger | nullNull for smart-feed snapshot rows, which have no database id — `guid` is the stable identity there.
data.feed_idinteger
data.guidstring
data.titlestring | null
data.slugstring | null
data.status"published" | "scheduled" | "draft"
data.urlstring | null
data.original_urlstring | null
data.descriptionstring | null
data.bodystring | null
data.image_urlstring | null
data.source_titlestring | null
data.source_urlstring | null
data.authorstring | null
data.categoriesarray<string> | null
data.published_atstring | null
data.scheduled_atstring | null
data.created_atstring | null
data.updated_atstring | null

Errors: 401, 403, 404, 429, 503. See policies for the error envelope.

PATCH /posts/{post}

Token ability: posts:write

Parameters

NameInTypeDescription
post *pathinteger
Idempotency-Key *headerstringRequired. 1–255 printable ASCII characters. Replaying a key returns the original response; a different request under the same key is a 422. Kept 24 h.

Request body

FieldTypeDescription
feed_idinteger
titlestring
slugstring
bodystring | null
authorstring | null
tag_idsarray<integer> | null
image_urlstring | null
status"published" | "scheduled" | "draft"
scheduled_atstring
Response 200
FieldTypeDescription
dataarray<any>

Errors: 400, 401, 403, 404, 409, 413, 415, 422, 429, 503. See policies for the error envelope.

DELETE /posts/{post}

Token ability: posts:write

Parameters

NameInTypeDescription
post *pathinteger
Idempotency-KeyheaderstringOptional. Same semantics as POST/PATCH when present; without it a repeat DELETE meets the already-deleted record as a 404.
Response 204 (no body)

Errors: 400, 401, 403, 404, 409, 413, 415, 422, 429, 503. See policies for the error envelope.

Channel

GET /channels

Token ability: channels:read

Parameters

NameInTypeDescription
cursorquerystringOpaque signed cursor from the previous page meta. Omit for the first page.
per_pagequeryintegerPage size, 1–100. Default 25.
Response 200
FieldTypeDescription
dataarray<object>
data[].idinteger
data[].public_idstring
data[].channel_idstring | null
data[].providerstring
data[].namestring
data[].avatar_urlstring | null
data[].public_urlstring | null
data[].target_kindstring | null
data[].capabilitiesarray<string>
data[].connected_atstring | null
data[].needs_reconnectboolean
data[].verifiedboolean | null
data[].overage_disabledboolean
metaobject
meta.per_pageinteger
meta.next_cursorstring | null
meta.has_moreboolean

Errors: 401, 403, 422, 429, 503. See policies for the error envelope.

Publisher

GET /publishers

Token ability: publishers:read

Parameters

NameInTypeDescription
cursorquerystringOpaque signed cursor from the previous page meta. Omit for the first page.
per_pagequeryintegerPage size, 1–100. Default 25.
Response 200
FieldTypeDescription
dataarray<object>
data[].idinteger
data[].public_idstring
data[].namestring
data[].status"draft" | "running" | "paused" | "error"
data[].destinationstring
data[].timezonestring
data[].schedule_typestring
data[].start_atstring | null
data[].stop_atstring | null
data[].next_run_atstring | null
data[].last_run_atstring | null
data[].consecutive_failuresinteger
data[].created_atstring | null
data[].updated_atstring | null
data[].feeds_countinteger
data[].feedsarray<object>
data[].feeds[].idinteger
data[].feeds[].public_idstring
data[].feeds[].titlestring
data[].feeds[].image_urlstring | null
data[].feeds[].source_urlstring | null
metaobject
meta.per_pageinteger
meta.next_cursorstring | null
meta.has_moreboolean

Errors: 401, 403, 422, 429, 503. See policies for the error envelope.

GET /publishers/{publisher}

Token ability: publishers:read

Parameters

NameInTypeDescription
publisher *pathinteger
Response 200
FieldTypeDescription
dataobject
data.idinteger
data.public_idstring
data.namestring
data.status"draft" | "running" | "paused" | "error"
data.destinationstring
data.timezonestring
data.schedule_typestring
data.start_atstring | null
data.stop_atstring | null
data.next_run_atstring | null
data.last_run_atstring | null
data.consecutive_failuresinteger
data.created_atstring | null
data.updated_atstring | null
data.feeds_countinteger
data.feedsarray<object>
data.feeds[].idinteger
data.feeds[].public_idstring
data.feeds[].titlestring
data.feeds[].image_urlstring | null
data.feeds[].source_urlstring | null

Errors: 401, 403, 404, 429, 503. See policies for the error envelope.

Tag

GET /tags

Token ability: feeds:read

Parameters

NameInTypeDescription
cursorquerystringOpaque signed cursor from the previous page meta. Omit for the first page.
per_pagequeryintegerPage size, 1–100. Default 25.
Response 200
FieldTypeDescription
dataarray<object>
data[].idinteger
data[].namestring
data[].slugstring
data[].colorstring | null
metaobject
meta.per_pageinteger
meta.next_cursorstring | null
meta.has_moreboolean

Errors: 401, 403, 422, 429, 503. See policies for the error envelope.

Webhook events

Each delivery is a signed POST to your webhook channel. The quickstart shows how to verify the signature.

channel.token_expired
FieldTypeDescription
event"channel.token_expired"
event_idstringStable id "channel.token_expired:<integrationId>:<uuid>" — prefixed, not a bare UUID. Dedupe on this — retries repeat it with the same body.
versionintegerPayload version. A breaking shape change ships a new version.
occurred_atstringISO 8601 UTC timestamp of the source event.
dataobject
data.integrationobject
data.integration.idinteger
data.integration.providerstring
data.integration.labelstringSafe display label — never a credential.
data.reasonstringInternal code such as provider_rejected_refresh.
post.published
FieldTypeDescription
event"post.published"
event_idstringStable UUID of the publication episode. Dedupe on this — retries repeat it with the same body.
versionintegerPayload version. A breaking shape change ships a new version.
occurred_atstringISO 8601 UTC timestamp of the source event.
dataobject
data.postobject
data.post.idinteger
data.post.guidstring
data.post.titlestring
data.post.urlstring | null
data.post.excerptstring | nullPlain-text excerpt, at most 2000 characters.
data.post.image_urlstring | null
data.post.authorstring | null
data.post.published_atstring | null
data.post.tagsarray<string>
data.feedobject | null
data.feed.idinteger
data.feed.titlestring
data.feed.urlstring | null
publisher.run.failed
FieldTypeDescription
event"publisher.run.failed"
event_idstringStable id "publisher.run.failed:<uuid>" — prefixed, not a bare UUID. Dedupe on this — retries repeat it with the same body.
versionintegerPayload version. A breaking shape change ships a new version.
occurred_atstringISO 8601 UTC timestamp of the source event.
dataobject
data.publisherobject
data.publisher.idinteger
data.publisher.namestring
data.publisher.destinationstring
data.errorobject
data.error.code"run_failed" | "credentials_rejected"
data.error.messagestring
data.consecutive_failuresinteger
data.occurrence_idinteger | null

Keep posting through busy weeks

Set sources, keywords and posting hours once. Feedigy posts to your channels while you work on other things.

No card required. The Free plan has no time limit.