API Documentation

Base URL

https://vidpipe.social
Authentication: Use an API key (PRO plan) by passing a Bearer token in the Authorization header. Generate your key from the dashboard or via the endpoint below.
Quick Start

Schedule a video in one command:

curl -X POST https://vidpipe.social/api/schedule \
  -H "Authorization: Bearer vp_your_api_key" \
  -F "video=@my-video.mp4" \
  -F "caption=Check this out" \
  -F "scheduled_at=30m"
Authentication

All API endpoints accept either a session cookie (web dashboard) or an API key via the Authorization header:

Authorization: Bearer vp_your_api_key
POST /api/key/generate PRO

Generate or regenerate your API key. Requires an active Pro subscription. Any previous key is invalidated.

{
  "api_key": "vp_a1b2c3d4e5f6..."
}
GET /api/me

Get the currently authenticated user's info. Pro users also receive their API key if one has been generated.

{
  "id": "open_id_abc123",
  "display_name": "username",
  "avatar_url": "https://...",
  "tier": "pro",
  "api_key": "vp_a1b2c3d4e5f6..." // only for Pro users with a key
}
POST /api/logout

End the current session.

{ "ok": true }
Scheduling
POST /api/schedule

Upload a video and schedule it for automatic posting to TikTok. Sends as multipart/form-data.

FieldTypeDescription
videofilerequiredVideo file (max 500 MB)
captionstringoptionalVideo caption (max 300 chars)
scheduled_atstringrequiredISO 8601 datetime (2026-02-15T14:30:00) or relative offset (30m, 2h, 1d)

Example (curl):

# With relative time (30 minutes from now):
curl -X POST https://vidpipe.social/api/schedule \
  -H "Authorization: Bearer vp_your_api_key" \
  -F "video=@my-video.mp4" \
  -F "caption=Check this out" \
  -F "scheduled_at=30m"

# With exact datetime:
curl -X POST https://vidpipe.social/api/schedule \
  -H "Authorization: Bearer vp_your_api_key" \
  -F "video=@my-video.mp4" \
  -F "caption=Check this out" \
  -F "scheduled_at=2026-02-15T14:30:00"

Response:

{
  "id": "uuid-here",
  "status": "pending",
  "scheduled_at": "2026-02-15T14:30:00.000Z",
  "publish_mode": "inbox"
}

Daily limits:

TierUploads / Day
Free1
Pro50
GET /api/videos

List all scheduled videos for the authenticated user, ordered by creation date (newest first).

[
  {
    "id": "uuid",
    "original_name": "my-video.mp4",
    "file_size": 15728640,
    "caption": "Check this out",
    "scheduled_at": "2026-02-15T14:30:00.000Z",
    "status": "pending", // pending | uploading | completed | failed
    "error": null
  }
]
DELETE /api/videos/:id

Delete a scheduled video. Only works for videos with status pending.

{ "ok": true }
Billing
POST /api/checkout

Create a Stripe Checkout session to upgrade to Pro. Returns a URL to redirect the user to.

{
  "url": "https://checkout.stripe.com/..."
}
GET /api/billing

Open the Stripe Billing Portal to manage your subscription. Requires an active Stripe customer.

{
  "url": "https://billing.stripe.com/..."
}
Errors

All error responses follow this format:

{ "error": "Description of what went wrong" }
StatusMeaning
400Bad request — missing or invalid parameters
401Not authenticated — log in first
403Forbidden — you don't own this resource
404Not found
429Daily upload limit reached
500Server error

Pride.Direct GmbH · Doormannsweg 19 · 20259 Hamburg · info@pride.direct