Posts API
The /v1/posts endpoint is the heart of pepe.business. One call publishes to all selected channels.
Create a post
{
"text": "Hello world",
"platforms": ["twitter", "linkedin", "facebook"],
"mediaUrls": ["https://example.com/image.jpg"],
"schedule": "2026-07-14T10:00:00Z", // optional
"firstComment": "More details on https://example.com" // optional
}
Response 201 Created:
{
"id": "post_xxx",
"status": "scheduled",
"platforms": [
{ "platform": "twitter", "status": "queued" },
{ "platform": "linkedin", "status": "queued" },
{ "platform": "facebook", "status": "queued" }
],
"scheduledAt": "2026-07-14T10:00:00Z"
}
List posts
{
"data": [
{
"id": "post_xxx",
"text": "Hello world",
"status": "published",
"platforms": ["twitter", "linkedin"],
"publishedAt": "2026-07-13T10:00:00Z"
}
],
"nextCursor": "post_yyy",
"hasMore": true
}
Available filters: status, platform, category, dateFrom, dateTo.
Get a post
Edit a post
For a post not yet published:
{ "text": "Updated text" }
For an already published post, only certain fields are editable depending on the platform:
{ "text": "Updated text" }
Delete
Removes from pepe.business AND from published platforms (if supported).
Unpublish
Keeps the post in pepe.business but removes it from platforms:
Retry failed
If a post failed on a platform:
{ "platforms": ["instagram"] }
Bulk upload CSV
Content-Type: multipart/form-data
file: posts.csv
CSV format:
text,platforms,mediaUrls,schedule
"First post","twitter,linkedin","https://example.com/1.jpg","2026-07-14T10:00:00Z"
"Second post","twitter","","2026-07-14T11:00:00Z"
Asynchronous response: a batchId is returned, followed by status via webhook.
Sync external post
Import a post already published natively (for unified analytics):
{
"platform": "twitter",
"postUrl": "https://twitter.com/me/status/123456"
}