API reference

List posts

List your posts with per-network delivery status. Filter by status.

GET/api/v1/posts

Requires a Bearer API key — see authentication.

Returns your posts, most recent first, each with its status and metrics. Filter by one or more statuses, and cap the result count with limit.

Query parameters

statusstringoptional
Comma-separated statuses to include: draft, scheduled, publishing, published. Unknown values are ignored; omit to return all.
limitintegeroptional
Maximum number of posts to return.

Request

Send the request to GET /api/v1/posts. Set your key in the environment as POSTMYISH_KEY to run these as-is.

curl "https://postmyish.com/api/v1/posts?status=scheduled,published&limit=20" \
  -H "Authorization: Bearer $POSTMYISH_KEY"

Response

{
  "data": [
    {
      "id": "post_7d1a9c8b",
      "caption": "We just shipped v2 🚀",
      "platforms": ["x", "linkedin", "bluesky"],
      "status": "published",
      "has_media": false,
      "scheduled_at": null,
      "published_at": 1752566400000,
      "reach": 0,
      "engagement_rate": 0
    }
  ]
}

Response fields

dataarray<object>
The list of posts.
idstring
Unique identifier for the post.
captionstring
The caption text as stored.
platformsarray<string>
The network ids this post targets.
statusstring
One of draft, scheduled, publishing, or published.
has_mediaboolean
Whether media is attached to the post.
scheduled_atinteger | null
Unix milliseconds the post is scheduled to publish, or null.
published_atinteger | null
Unix milliseconds the post was published, or null.
reachinteger
Total reach reported back by the networks. Starts at 0 and only grows once a network reports.
engagement_ratenumber
Blended engagement rate as a percentage, rounded to two decimals. Starts at 0.

Try it

Run this endpoint live with your own key. The key is kept in your browser (local storage) and sent straight to the API — nothing passes through the docs.