postqued-api
v1.0.6PostQued social media scheduling API integration. Use when performing API calls to PostQued for content upload, publishing to TikTok (and other platforms), managing platform accounts, or querying publish status. Triggers on tasks involving social media posting, content scheduling, TikTok draft posti...
Installation
PostQued API Skill
Setup
Add your PostQued API key to your workspace .env file:
POSTQUED_API_KEY=pq_your_api_key_here
API keys are created in the PostQued dashboard at https://postqued.com/console. Keys start with pq_ prefix.
Authentication
All API requests require authentication via Bearer token:
Authorization: Bearer $POSTQUED_API_KEY
Base URL
https://api.postqued.com
API Documentation
OpenAPI spec: https://api.postqued.com/v1/docs/openapi.json
Core Workflow: Upload and Publish Content
Step 1: Upload Content
For videos (presigned URL upload):
# Start upload session
curl -X POST https://api.postqued.com/v1/content/upload
-H "Authorization: Bearer $POSTQUED_API_KEY"
-H "Content-Type: application/json"
-d '{
"filename": "video.mp4",
"contentType": "video/mp4",
"fileSize": 52428800
}'
# Response: { "contentId": "uuid", "upload": { "url": "presigned-url", "method": "PUT", "headers": {...} } }
# Upload file to presigned URL
curl -X PUT "PRESIGNED_URL"
-H "Content-Type: video/mp4"
--data-binary @video.mp4
# Confirm upload
curl -X POST https://api.postqued.com/v1/content/upload/complete
-H "Authorization: Bearer $POSTQUED_API_KEY"
-H "Content-Type: application/json"
-d '{
"contentId": "uuid-from-step-1",
"key": "content/user-id/content-id.mp4",
"filename": "video.mp4",
"contentType": "video/mp4",
"size": 52428800,
"width": 1920,
"height": 1080,
"durationMs": 30000
}'
For images (direct upload):
curl -X POST https://api.postqued.com/v1/content/upload-image
-H "Authorization: Bearer $POSTQUED_API_KEY"
-H "Content-Type: multipart/form-data"
-F "[email protected]"
Step 2: Get Platform Account ID
curl https://api.postqued.com/v1/platform-accounts?platform=tiktok
-H "Authorization: Bearer $POSTQUED_API_KEY"
# Response: { "accounts": [{ "id": "account-uuid", "username": "@user", ... }] }
Step 3: Publish Content
Important: Always include a unique Idempotency-Key header (valid 24h).
curl -X POST https://api.postqued.com/v1/content/publish
-H "Authorization: Bearer $POSTQUED_API_KEY"
-H "Content-Type: application/json"
-H "Idempotency-Key: unique-uuid-per-request"
-d '{
"contentIds": ["content-uuid"],
"targets": [{
"platform": "tiktok",
"accountId": "account-uuid",
"intent": "draft",
"caption": "Check this out! #fyp",
"dispatchAt": null,
"options": {
"privacyLevel": "SELF_ONLY",
"disableDuet": false,
"disableStitch": false,
"disableComment": false
}
}]
}'
# Response: { "publishId": "uuid", "status": "pending", "targets": [...] }
Step 4: Check Publish Status
curl https://api.postqued.com/v1/content/publish/PUBLISH_ID
-H "Authorization: Bearer $POSTQUED_API_KEY"
API Reference
See references/api.md for complete endpoint documentation.
TikTok-Specific Options
| Option | Type | Description |
|---|---|---|
| privacyLevel | string | PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY |
| disableDuet | boolean | Disable duet |
| disableStitch | boolean | Disable stitch |
| disableComment | boolean | Disable comments |
| videoCoverTimestampMs | integer | Cover frame timestamp (videos) |
| autoAddMusic | boolean | Auto-add music (photos) |
| brandContentToggle | boolean | Paid partnership disclosure |
| brandOrganicToggle | boolean | Promotional content disclosure |
Intent Values
draft- Send to TikTok inbox as draft (user publishes manually)publish- Direct publish to user's TikTok profile
Status Values
Publish Request: pending | processing | completed | partial_failed | failed | canceled
Target: queued | scheduled | processing | sent | published | failed | canceled
Scheduling
Set dispatchAt to a future UTC ISO timestamp:
{
"dispatchAt": "2026-02-20T15:00:00Z"
}
Set to null for immediate dispatch.
Rate Limits
| Operation | Limit |
|---|---|
| Upload | 20/min |
| Read | 30/min |
| Publish | 10/min |
| Delete | 20/min |
Error Handling
Errors return:
{
"error": "Message",
"code": "ERROR_CODE"
}
Common codes: MISSING_IDEMPOTENCY_KEY, IDEMPOTENCY_CONFLICT, SUBSCRIPTION_REQUIRED