Content
The content resource is the workhorse of the API. See Content model for a full field reference; this page covers the endpoints.
List content
Section titled “List content”GET /api/v1/contentQuery parameters:
| Name | Type | Notes |
|---|---|---|
status | string | Filter by status. |
content_type | string | Filter by content type. |
limit | integer | 1 to 100, default 25. |
cursor | string | See Pagination. |
curl "https://app.nativpost.com/api/v1/content?status=scheduled&limit=20" \ -H "Authorization: Bearer $NATIVPOST_API_KEY"Retrieve content
Section titled “Retrieve content”GET /api/v1/content/{id}curl https://app.nativpost.com/api/v1/content/9f2c8e7b-1a3d-4f60-b2c1-7e5a9d3c4b81 \ -H "Authorization: Bearer $NATIVPOST_API_KEY"Create content
Section titled “Create content”POST /api/v1/contentBody:
{ "caption": "Our new home office setup.", "content_type": "single_image", "target_platforms": ["instagram", "facebook"], "media_urls": ["https://res.cloudinary.com/.../office.jpg"]}caption is the only required field. content_type defaults to single_image.
Optional fields: hashtags (array, no leading #), topic, platform_specific (object keyed by platform), aspect_ratio, scheduled_for (ISO 8601), and status — one of draft (default), pending_review, approved, scheduled.
Media is attached by URL via media_urls, not by asset id. Use the media library to find them.
Update content
Section titled “Update content”PATCH /api/v1/content/{id}Send only the fields you want to change. Common patterns:
# Approve and schedulecurl -X PATCH https://app.nativpost.com/api/v1/content/9f2c8e7b-1a3d-4f60-b2c1-7e5a9d3c4b81 \ -H "Authorization: Bearer $NATIVPOST_API_KEY" \ -H "Content-Type: application/json" \ -d '{"status":"scheduled","scheduled_for":"2026-07-19T13:00:00Z"}'On update, status also accepts rejected.
Publish now
Section titled “Publish now”POST /api/v1/content/{id}/publishQueues the item for publishing and returns 202 Accepted. Omit scheduled_for to release it to the next publishing run; pass it to schedule the item for a specific time.
The item must already have target_platforms set — otherwise the call fails with 422 no_target_platforms.
Body (optional):
{ "scheduled_for": "2026-07-19T13:00:00Z" }Response is the serialized content plus a queue flag:
{ "object": "content", "id": "9f2c8e7b-1a3d-4f60-b2c1-7e5a9d3c4b81", "status": "approved", "scheduled_for": "2026-07-19T13:00:00Z", "publish_queued": true}Because publishing is asynchronous, the response does not carry per-platform results. Poll the item, or subscribe to the publishing webhooks, to learn the outcome.
Delete content
Section titled “Delete content”DELETE /api/v1/content/{id}Archives the item — its status becomes archived and it drops out of list results. Fires the content.deleted webhook and returns:
{ "id": "9f2c8e7b-1a3d-4f60-b2c1-7e5a9d3c4b81", "object": "content", "deleted": true }There is no API call to restore an archived item. Set status to rejected instead if it may be wanted back.