Skip to main content

List Posts

GET /developers/v1/posts​

Returns a paginated list of posts belonging to the authenticated user. You can filter by status and date range to narrow the results.

Request​

Headers​

HeaderRequiredDescription
X-API-KEYYes*Your personal API key.
AuthorizationYes*Bearer token: Bearer sp_tok_xxxxxxx.

*Provide one of the two authentication headers.

Query parameters​

ParameterTypeRequiredDefaultDescription
statusstringNoallFilter by post status. One of: scheduled, posted, failed, draft, pending_approval, all.
start_datestringNo—Return posts scheduled on or after this date. Format: YYYY-MM-DD.
end_datestringNo—Return posts scheduled on or before this date. Format: YYYY-MM-DD.
pageintegerNo1Page number for pagination.
per_pageintegerNo20Number of posts per page. Maximum: 100.

Example request​

curl "https://api.schedpilot.com/developers/v1/posts?status=scheduled&start_date=2026-06-01&end_date=2026-06-30&page=1&per_page=20" \
-H "X-API-KEY: smm_4a9f3c1e8b205d7a6e0f2c49b8d3a15f"

Response​

Status: 200 OK

Top-level fields​

FieldTypeDescription
postsarrayArray of post objects matching the query.
totalintegerTotal number of posts matching the filter (across all pages).
pageintegerCurrent page number.
per_pageintegerNumber of items per page as requested.

Post object fields​

FieldTypeDescription
idintegerUnique post ID.
contentstringThe post text.
scheduled_datestringScheduled publish datetime in YYYY-MM-DD HH:MM:SS format.
timezonestringTimezone for scheduled_date.
statusstringCurrent post status: scheduled, posted, failed, draft, or pending_approval.
accountsarrayPer-platform delivery details (see below).
imagesarrayArray of image URLs attached to the post. Empty array if none.
videosarrayArray of video URLs attached to the post. Empty array if none.

Account delivery object (within accounts)​

FieldTypeDescription
idintegerThe connected account ID.
typestringPlatform type, e.g. "twitter", "linkedin".
posted_statusstringDelivery status for this specific platform: scheduled, posted, failed.
platform_post_idstring | nullThe native post ID assigned by the platform after successful delivery. null if not yet published.

Example response​

{
"posts": [
{
"id": 8841,
"content": "Excited to announce our new product launch! Check it out at acme.com/launch",
"scheduled_date": "2026-06-15 14:30:00",
"timezone": "America/New_York",
"status": "scheduled",
"accounts": [
{
"id": 12,
"type": "twitter",
"posted_status": "scheduled",
"platform_post_id": null
},
{
"id": 17,
"type": "linkedin",
"posted_status": "scheduled",
"platform_post_id": null
}
],
"images": [
"https://api.schedpilot.com/wp-content/uploads/smm/image-42.jpg"
],
"videos": []
},
{
"id": 8790,
"content": "Our weekly roundup is live. Read it on the blog.",
"scheduled_date": "2026-06-08 09:00:00",
"timezone": "UTC",
"status": "posted",
"accounts": [
{
"id": 12,
"type": "twitter",
"posted_status": "posted",
"platform_post_id": "1801234567890123456"
},
{
"id": 23,
"type": "instagram",
"posted_status": "posted",
"platform_post_id": "17895695668004550"
}
],
"images": [],
"videos": []
}
],
"total": 47,
"page": 1,
"per_page": 20
}

Error responses​

StatusDescription
400 Bad RequestInvalid parameter value (e.g. unrecognised status string, malformed date).
401 UnauthorizedMissing or invalid authentication credentials.
429 Too Many RequestsRead rate limit exceeded (60 requests/hour).