Posts
Puts the failed targets of the post back in line and publishes them right away.
Requires posts:write.
Authorization
bearerAuth AuthorizationBearer <token>
API key starting with fh_
In: header
Path Parameters
id*string
Post id
Match
^post_[0-9a-fA-F]{32}$Header Parameters
Idempotency-Key?string
Any unique string up to 255 characters. A retry with the same key within 24 hours returns the first response instead of running again.
Length
length <= 255Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://feedhorizon.com/api/v1/posts/post_0195f0a27b3c7d4e8f5a1b2c3d4e5f60/retry"{
"data": {
"id": "post_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
"profileId": "prof_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
"content": "Five-minute tomato soup, our quickest weeknight dinner.",
"status": "draft",
"source": "ui",
"scheduledAt": "2026-11-10T08:00:00.000Z",
"timezone": "Europe/Berlin",
"publishedAt": "2026-11-10T08:00:00.000Z",
"idempotencyKey": "launch-post-2026-11-10",
"createdAt": "2026-11-10T08:00:00.000Z",
"updatedAt": "2026-11-10T08:00:00.000Z",
"targets": [
{
"id": "tgt_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
"socialAccountId": "acc_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
"accountName": "Soup Club",
"platform": "twitter",
"content": null,
"options": {
"pinterest": {
"boardId": "string",
"title": "string",
"link": "http://example.com"
},
"tiktok": {
"privacyLevel": "PUBLIC_TO_EVERYONE",
"allowComment": true,
"allowDuet": true,
"allowStitch": true,
"brandOrganic": true,
"brandedContent": true,
"aiGenerated": true
}
},
"status": "draft",
"attempts": 0,
"scheduledAt": "2026-11-10T08:00:00.000Z",
"publishedAt": "2026-11-10T08:00:00.000Z",
"platformPostId": "1854123456789012345",
"platformUrl": "https://x.com/i/web/status/1854123456789012345",
"error": {
"code": "string",
"category": "auth_expired",
"source": "user",
"message": "string"
}
}
],
"media": [
{
"id": "med_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
"url": "https://media.feedhorizon.com/org_…/launch.jpg",
"mimeType": "image/jpeg",
"filename": "launch.jpg",
"sizeBytes": 482113
}
]
}
}{
"error": {
"type": "invalid_request_error",
"code": "validation_failed",
"message": "One or more fields are invalid, see details",
"docUrl": "https://feedhorizon.com/docs/api/errors#invalid_request_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "authentication_error",
"code": "missing_api_key",
"message": "No Authorization: Bearer header",
"docUrl": "https://feedhorizon.com/docs/api/errors#authentication_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "permission_error",
"code": "insufficient_scope",
"message": "The key lacks the scope for this endpoint",
"docUrl": "https://feedhorizon.com/docs/api/errors#permission_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "not_found_error",
"code": "resource_not_found",
"message": "The resource does not exist, belongs to another organization, or the key cannot see its profile. A malformed id is also a 404",
"docUrl": "https://feedhorizon.com/docs/api/errors#not_found_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "conflict_error",
"code": "post_not_failed",
"message": "Only failed posts can be retried",
"docUrl": "https://feedhorizon.com/docs/api/errors#conflict_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "idempotency_error",
"code": "idempotency_key_reused",
"message": "The key was used for a different request. Use a new key",
"docUrl": "https://feedhorizon.com/docs/api/errors#idempotency_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Too many requests. Wait the seconds in Retry-After",
"docUrl": "https://feedhorizon.com/docs/api/errors#rate_limit_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "Something failed on our side. Retry with backoff, using the same Idempotency-Key for writes",
"docUrl": "https://feedhorizon.com/docs/api/errors#api_error",
"requestId": "req_m2x81a0kfd3h9s"
}
}Publish a post now POST
Publishes a draft or scheduled post right away. The post is checked like on create. Answers at once with status `scheduled`; follow the result with `GET /posts/{id}` or the `post.published` and `post.failed` webhooks. Requires `posts:write`.
List media files GET
Newest first. Requires `posts:read`.