Vibescaling Docs

Posts

Managing posts via the Vibescaling API

List Posts

GET /api/v1/posts?status=draft&page=1&per_page=20

Query Parameters

ParameterTypeDescription
statusstringFilter by status: draft, scheduled, posted, archived
account_idstringFilter by account UUID
pagenumberPage number (default: 1)
per_pagenumberItems per page (default: 20, max: 100)

Response

{
  "data": [...],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 42,
    "total_pages": 3
  }
}

Create a Post

POST /api/v1/posts

Request body

{
  "title": "My Post Title",
  "caption": "Check out these slides!",
  "hashtags": "#tiktok #content",
  "hook": "Wait for it...",
  "hook_type": "curiosity",
  "angle_type": "educational"
}

All fields except title are optional. Posts are created with status draft.

Get a Post

GET /api/v1/posts/:id

Update a Post

PATCH /api/v1/posts/:id

Request body

Any combination of:

{
  "title": "Updated title",
  "caption": "New caption",
  "hashtags": "#updated",
  "status": "scheduled",
  "scheduled_at": "2026-03-15T14:00:00Z",
  "tiktok_account_id": "uuid"
}

Scheduling via PATCH

Set status to scheduled along with scheduled_at and tiktok_account_id to schedule a post.

Archive a Post

DELETE /api/v1/posts/:id

Sets the post status to archived. This is a soft delete.

Upload Slides

POST /api/v1/posts/:id/assets

Request body

{
  "filename": "slide1.png",
  "content_type": "image/png"
}

Response

{
  "upload_url": "https://...",
  "r2_key": "orgs/{org}/posts/{post}/slides/slide1.png"
}

Upload the file directly to upload_url via PUT request with the correct Content-Type header.

Post Object

FieldTypeDescription
iduuidPost ID
org_iduuidOrganization ID
titlestringPost title
captionstring?Post caption
hashtagsstring?Hashtags
hookstring?Opening hook
statusstringdraft, scheduled, posted, archived
scheduled_attimestamp?When the post is scheduled to publish
posted_attimestamp?When the post was published
tiktok_account_iduuid?TikTok account for publishing
created_attimestampCreation time
updated_attimestampLast update time

On this page