Docs
Posts
POST
/posts

Creates a draft, a scheduled post, a queued post or publishes right away, depending on which timing field you send. Use targets to give single accounts their own text. The post is checked against every platform first; all problems come back at once in error.details (try POST /posts/validate for a dry run). Send an Idempotency-Key header to make retries safe.

Requires posts:write.

Authorization

bearerAuth
AuthorizationBearer <token>

API key starting with fh_

In: header

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.

Lengthlength <= 255

Request Body

application/json

profileId*string

Profile id

Match^prof_[0-9a-fA-F]{32}$
content?string

Post text. Each account can get its own text through targets

Lengthlength <= 63206
platforms?array<>

Publish to every active account of these platforms in the profile

Items1 <= items
accountIds?array<>

Or name the accounts explicitly (wins over platforms)

Items1 <= items
targets?array<>

The accounts to publish to, each with optional own text. Wins over platforms and accountIds

Items1 <= items <= 50
mediaIds?array<>

Files from POST /media, in display order

Itemsitems <= 20
scheduledFor?string

Schedule for this time. Leave out all three timing fields for a draft

Formatdate-time
publishNow?boolean

Publish right away

addToQueue?boolean

Take the profile's next free queue slot

timezone?string

Time zone shown with the post. Defaults to the profile's

Response 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" \  -H "Content-Type: application/json" \  -d '{    "profileId": "prof_0195f0a27b3c7d4e8f5a1b2c3d4e5f60"  }'
{
  "data": {
    "id": "post_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
    "profileId": "prof_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
    "content": "string",
    "status": "draft",
    "source": "ui",
    "scheduledAt": "2019-08-24T14:15:22Z",
    "timezone": "string",
    "publishedAt": "2019-08-24T14:15:22Z",
    "idempotencyKey": "string",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "targets": [
      {
        "id": "tgt_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
        "socialAccountId": "acc_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
        "accountName": "string",
        "platform": "twitter",
        "content": "string",
        "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": "2019-08-24T14:15:22Z",
        "publishedAt": "2019-08-24T14:15:22Z",
        "platformPostId": "string",
        "platformUrl": "string",
        "error": {
          "code": "string",
          "category": "auth_expired",
          "source": "user",
          "message": "string"
        }
      }
    ],
    "media": [
      {
        "id": "med_0195f0a27b3c7d4e8f5a1b2c3d4e5f60",
        "url": "string",
        "mimeType": "string",
        "filename": "string",
        "sizeBytes": 0
      }
    ]
  }
}
{
  "error": {
    "type": "invalid_request_error",
    "code": "string",
    "message": "string",
    "param": "string",
    "details": [
      {
        "param": "string",
        "code": "string",
        "message": "string"
      }
    ],
    "docUrl": "http://example.com",
    "requestId": "string"
  }
}
{
  "error": {
    "type": "invalid_request_error",
    "code": "string",
    "message": "string",
    "param": "string",
    "details": [
      {
        "param": "string",
        "code": "string",
        "message": "string"
      }
    ],
    "docUrl": "http://example.com",
    "requestId": "string"
  }
}
{
  "error": {
    "type": "invalid_request_error",
    "code": "string",
    "message": "string",
    "param": "string",
    "details": [
      {
        "param": "string",
        "code": "string",
        "message": "string"
      }
    ],
    "docUrl": "http://example.com",
    "requestId": "string"
  }
}
{
  "error": {
    "type": "invalid_request_error",
    "code": "string",
    "message": "string",
    "param": "string",
    "details": [
      {
        "param": "string",
        "code": "string",
        "message": "string"
      }
    ],
    "docUrl": "http://example.com",
    "requestId": "string"
  }
}
{
  "error": {
    "type": "invalid_request_error",
    "code": "string",
    "message": "string",
    "param": "string",
    "details": [
      {
        "param": "string",
        "code": "string",
        "message": "string"
      }
    ],
    "docUrl": "http://example.com",
    "requestId": "string"
  }
}
{
  "error": {
    "type": "invalid_request_error",
    "code": "string",
    "message": "string",
    "param": "string",
    "details": [
      {
        "param": "string",
        "code": "string",
        "message": "string"
      }
    ],
    "docUrl": "http://example.com",
    "requestId": "string"
  }
}
{
  "error": {
    "type": "invalid_request_error",
    "code": "string",
    "message": "string",
    "param": "string",
    "details": [
      {
        "param": "string",
        "code": "string",
        "message": "string"
      }
    ],
    "docUrl": "http://example.com",
    "requestId": "string"
  }
}
{
  "error": {
    "type": "invalid_request_error",
    "code": "string",
    "message": "string",
    "param": "string",
    "details": [
      {
        "param": "string",
        "code": "string",
        "message": "string"
      }
    ],
    "docUrl": "http://example.com",
    "requestId": "string"
  }
}