Bulk upload from CSV
Create multiple posts by uploading a CSV file. Use dryRun=true to validate without creating posts.
CSV columns:
- Required:
platforms,profiles, and a schedule (one ofschedule_time, aschedule_time_<platform>override,publish_now=true,use_queue=true, oris_draft=true). - Content: at least one of
post_content,title, ormedia_urlsis required. - Aliases: a handful of columns accept the JSON field name from POST /v1/posts, since integrators infer the CSV shape from that endpoint's body. When both are present the real CSV column wins, unless it is blank for that row, in which case the alias value is used.
contentaliasespost_contenttimezonealiasestzscheduledForaliasesschedule_timemediaUrlsaliasesmedia_urls
- Per-platform overrides use three dynamic column prefixes, one column per platform (e.g.
schedule_time_instagram,custom_content_tiktok,custom_media_youtube):schedule_time_<platform>,custom_content_<platform>,custom_media_<platform>. - Any other column is not read. It does not error, but it is reported in the response's
warningsarray asunknown_columns:<a,b,c>(see BulkUploadResult), so a misnamed or unsupported column is never silently dropped. - Row limits: 5000 rows is a hard cap that returns 400 above it. 500 rows is only an advisory threshold, it adds
rows_exceed_advisory_limit:500towarningsand the request still processes.
Example row (header + one data row):
post_content,platforms,profiles,schedule_time,tz
"Hello world",instagram,MyProfile,2026-09-01 10:00,America/New_York
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Query Parameters
falseRequest Body
multipart/form-data
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{ "total": 1, "valid": 1, "invalid": 0, "results": [ { "rowIndex": 1, "ok": true, "createdPostId": "69df8c12f102e11169c53cd3" } ], "warnings": []}Unpublish post
Deletes a published post from the specified platform. The post record in Zernio is kept but its status is updated to cancelled. Not supported on Instagram, TikTok, or Snapchat. Threaded posts delete all items. YouTube deletion is permanent.
Retry failed post
Immediately retries publishing a failed post. Returns the updated post with its new status.