API reference
Base URL: https://api.mynahcast.xyz. Authenticate with Authorization: Bearer myn_live_…. The machine-readable spec is the source of truth: https://api.mynahcast.xyz/v1/openapi.json (OpenAPI 3.1), with request and response schemas for every operation.
Each operation is also an MCP tool with the same input. Writes accept an Idempotency-Key header, and the ones marked dry_run accept ?dry_run=true.
- POST
/v1/posts/validateValidate a post against every target channel without saving itmynahcast_validate_post · posts:read - POST
/v1/postsCreate a post for one brand, fanned out to one or more channelsmynahcast_create_post · posts:write · dry_run - GET
/v1/posts/{postId}Get one post with its per-channel delivery statemynahcast_get_post · posts:read - GET
/v1/postsList posts (cursor pagination), filtered by brand, status, channel and time rangemynahcast_list_posts · posts:read - PATCH
/v1/posts/{postId}Edit a post's content, channels or schedule (before it publishes)mynahcast_update_post · posts:write · dry_run - POST
/v1/posts/{postId}/rescheduleMove a post to a new time, or unschedule it (schedule: null)mynahcast_reschedule_post · posts:write · dry_run - DELETE
/v1/posts/{postId}Delete a post and cancel every delivery that has not gone outmynahcast_delete_post · posts:write · dry_run - GET
/v1/posts/{postId}/timelineEvery delivery attempt for a post, with platform response codesmynahcast_get_post_timeline · posts:read - POST
/v1/posts/{postId}/approvalSubmit a post for approval (binds to its exact current content)mynahcast_submit_for_approval · posts:write · dry_run - POST
/v1/approvals/{approvalId}/decisionApprove, request changes on, or reject a post (humans only)mynahcast_decide_approval · approvals:decide - GET
/v1/channelsList connected channels and their healthmynahcast_list_channels · channels:read - GET
/v1/channels/{channelId}/capabilitiesLimits, media rules and the settings schema of one channelmynahcast_get_channel_capabilities · channels:read - POST
/v1/media/uploadsGet a presigned URL to upload a file directly to storagemynahcast_request_upload · media:write · dry_run - POST
/v1/media/{mediaId}/completeConfirm an upload finished; the file is checked in storagemynahcast_complete_upload · media:write - GET
/v1/brands/{brandId}/voiceRead a brand's active voice profilemynahcast_get_brand_voice · posts:read - PUT
/v1/brands/{brandId}/voicePublish a new version of a brand's voice profilemynahcast_update_brand_voice · voice:write · dry_run
Errors
Errors are application/problem+json with type, title, status, code and a requestId; validation errors add a fix hint. 401 means a missing or revoked key, 403 a key without the scope, 422 a post that fails validation, 429 a rate limit (respect Retry-After).