GenuineAIGenuineAI
For usersFor developers
  • Overview
  • Guides
  • How-to
  • API reference
Documentation
  • Quickstart
  • Authentication
  • Errors
  • Rate limits
  • API reference
Platform
  • Platform overview
  • Solutions
  • Pricing
  • Sign in
Company
  • Status
  • Trust Center
  • Contact
  • Terms of Service
  • Privacy Policy

© 2026 GenuineAI Ventures LLC

support@genuinehq.com
Overview
Core
Media library
AI
Documents
Knowledge
Creative
Website & content
    Website content
    Content schemas
    Content approval flows
    CMS sync
    Social
      List social accountsgetList postsgetSend a postpostGet a postgetCancel a postdelete
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

Social

Which social accounts are connected, and posting to them immediately or on a schedule.


List social accounts

GET
https://api.genuineai.app/api/v1
/social/connections

Which platforms this workspace is connected to and whether each connection is still usable — the thing to check first when a post fails.

Requires the module-social-post license feature. Without it the request is refused with 403 license_required — see plans and modules.

List social accounts › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

List social accounts › Responses

Success

No data returned
GET/social/connections
curl https://api.genuineai.app/api/v1/social/connections \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

List posts

GET
https://api.genuineai.app/api/v1
/social/posts

Returns posts sent or scheduled to a social platform, newest first, with the source file's name and type alongside each.

Requires the module-social-post license feature. Without it the request is refused with 403 license_required — see plans and modules.

List posts › query Parameters

cursor
​string · maxLength: 512 · pattern: ^[A-Za-z0-9_-]+$
file_id
​string · uuid
limit
​integer
offset
​integer · min: 0
platform
​string · enum
Enum values:
instagram
sort
​string · minLength: 1 · maxLength: 64 · pattern: ^-?[a-z0-9_]+$
sp_created
​array
sp_scheduled_at
​array
status
​string · enum
Enum values:
scheduled
publishing
published
failed
cancelled

List posts › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

List posts › Responses

Success

​SocialPost[] · required
has_more
​boolean · required

Whether more rows exist past this page.

next_cursor
​string | null · required

Pass back as cursor for the next page. Null on the last page.

GET/social/posts
curl https://api.genuineai.app/api/v1/social/posts \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "sp_id": "00000000-0000-0000-0000-000000000000", "sp_file": "sp_file", "sp_user": "sp_user", "sp_platform": "sp_platform", "sp_status": "sp_status", "sp_caption": "sp_caption", "sp_media_type": "sp_media_type", "sp_platform_data": "sp_platform_data", "sp_metadata": {}, "sp_error": "sp_error", "sp_scheduled_at": "2024-08-25T15:00:00Z", "sp_published_at": "2024-08-25T15:00:00Z", "sp_created": "2024-08-25T15:00:00Z", "sp_updated": "2024-08-25T15:00:00Z", "file_name": "file_name", "file_type": "file_type", "file_replicas": {} } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Send a post

POST
https://api.genuineai.app/api/v1
/social/posts

Sends a file the workspace already holds to a connected account. Give scheduled_at to queue it for later instead of posting immediately — a scheduled post can still be cancelled, a sent one cannot.

Requires social:publish, media:download, document:download, knowledge-base:view, thread:view, design:view, prompt:view and presentation:view together.

Requires the module-social-post license feature. Without it the request is refused with 403 license_required — see plans and modules.

Send a post › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Send a post › Request Body

file_id
​string · uuid · required
platform
​string · enum · required
Enum values:
instagram
caption
​string
media_type
​string · enum
Enum values:
IMAGE
VIDEO
REELS
STORIES
CAROUSEL
scheduled_at
​string · date-time

Send a post › Responses

Success

No data returned
POST/social/posts
curl https://api.genuineai.app/api/v1/social/posts \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "file_id": "00000000-0000-0000-0000-000000000000", "platform": "instagram", "caption": "caption", "media_type": "IMAGE", "scheduled_at": "2024-08-25T15:00:00Z" }'
Example Request Body
{ "file_id": "00000000-0000-0000-0000-000000000000", "platform": "instagram", "caption": "caption", "media_type": "IMAGE", "scheduled_at": "2024-08-25T15:00:00Z" }
json
Example Responses
No example specified for this content type

Get a post

GET
https://api.genuineai.app/api/v1
/social/posts/{id}

The record with the file it sent, including the outcome reported by the platform.

Requires the module-social-post license feature. Without it the request is refused with 403 license_required — see plans and modules.

Get a post › path Parameters

id
​string · uuid · required

Get a post › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Get a post › Responses

Success

A post sent to a connected social account, or scheduled to be.
SocialPost
sp_id
​string · uuid
sp_file
​string
sp_user
​string
sp_platform
​string
sp_status
​string
sp_caption
​string
sp_media_type
​string
sp_platform_data
​string
sp_metadata
​object
sp_error
​string
sp_scheduled_at
​string · date-time
sp_published_at
​string · date-time
sp_created
​string · date-time
sp_updated
​string · date-time
file_name
​string
file_type
​string
file_replicas
​object
GET/social/posts/{id}
curl https://api.genuineai.app/api/v1/social/posts/:id \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "sp_id": "00000000-0000-0000-0000-000000000000", "sp_file": "sp_file", "sp_user": "sp_user", "sp_platform": "sp_platform", "sp_status": "sp_status", "sp_caption": "sp_caption", "sp_media_type": "sp_media_type", "sp_platform_data": "sp_platform_data", "sp_metadata": {}, "sp_error": "sp_error", "sp_scheduled_at": "2024-08-25T15:00:00Z", "sp_published_at": "2024-08-25T15:00:00Z", "sp_created": "2024-08-25T15:00:00Z", "sp_updated": "2024-08-25T15:00:00Z", "file_name": "file_name", "file_type": "file_type", "file_replicas": {} }
json
application/json

Cancel a post

DELETE
https://api.genuineai.app/api/v1
/social/posts/{id}

Only while it is still scheduled. Once it has gone out, it has to be removed on the platform itself.

Requires the module-social-post license feature. Without it the request is refused with 403 license_required — see plans and modules.

Cancel a post › path Parameters

id
​string · uuid · required

Cancel a post › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Cancel a post › Responses

Success

No data returned
DELETE/social/posts/{id}
curl https://api.genuineai.app/api/v1/social/posts/:id \ --request DELETE \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

CMS syncWorkflows