dystro-dev Posts API
The posts API from dystro-dev — 13 operation(s) for posts.
The posts API from dystro-dev — 13 operation(s) for posts.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/dystro-dev:dystro-dev-posts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Dystro Dev Posts API
version: 1.0.0
description: 'Operations tagged posts across 2 of this provider''s published API definitions: dystro-dev-openapi.json, dystro-dev-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://lovable-anaconda-804.convex.site
security:
- bearerAuth: []
tags:
- name: Posts
paths:
/v1/posts:
post:
operationId: posts_create
summary: Create, schedule, or save a post as a draft for one or more platforms
tags:
- Posts
x-required-scope: posts:write
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePostBody'
responses:
'200':
description: Created. status may be 'pending_approval' (held for review by the project's agent policy) with zero legs.
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Scope or account allowlist blocked (DY_KEY_*)
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'422':
description: Pre-flight validation failed (violations[])
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'429':
description: Key posts-per-day cap reached (DY_KEY_POST_CAP_EXCEEDED)
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
get:
operationId: posts_list
summary: List posts in a project
tags:
- Posts
x-required-scope: posts:read
responses:
'200':
description: 'Posts (query: projectId, status?, limit?, cursor?)'
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:read scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}:
get:
operationId: posts_get
summary: Get a post and its per-platform delivery legs
tags:
- Posts
x-required-scope: posts:read
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: Detail with legs[]
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:read scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: Not found
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
patch:
operationId: posts_update
summary: Update a draft body or reschedule a scheduled post
tags:
- Posts
x-required-scope: posts:write
parameters:
- name: postId
in: path
required: true
schema:
type: string
description: Edit a draft ({text}) or reschedule ({scheduledFor}).
responses:
'200':
description: Updated
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:write scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Wrong state
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
delete:
operationId: posts_delete
summary: Cancel a post that has not been published
tags:
- Posts
x-required-scope: posts:write
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:write scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/analytics:
get:
operationId: posts_get_analytics
summary: Get analytics snapshots for a post
tags:
- Posts
x-required-scope: analytics:read
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the analytics:read scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/boost:
post:
operationId: posts_boost
summary: Create a paid promotion for a published post
tags:
- Posts
x-idempotency-key: supported
parameters:
- name: postId
in: path
required: true
schema:
type: string
description: 'Paid promotion; requires ads:boost (or legacy ads:write). Honors the Idempotency-Key header: 409 while the first attempt runs, replay within the completion window returns the original response.'
responses:
'200':
description: Boost created
'400':
description: Ceiling or validation blocked
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Scope missing
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/legs/{legId}/retry:
post:
operationId: posts_retry_leg
summary: Retry one failed delivery leg without duplicating the platform post
tags:
- Posts
x-required-scope: posts:write
parameters:
- name: postId
in: path
required: true
schema:
type: string
- name: legId
in: path
required: true
schema:
type: string
responses:
'200':
description: Leg re-fired
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:write scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'404':
description: No such leg on this post
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Leg not in failed state
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/retry:
post:
operationId: posts_retry
summary: Retry every failed delivery leg on a post
tags:
- Posts
x-required-scope: posts:write
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:write scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/legs:
get:
operationId: posts_list_legs
summary: List the per-platform delivery legs for a post
tags:
- Posts
x-required-scope: posts:read
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:read scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/boosts:
get:
operationId: posts_list_boosts
summary: List paid promotions created for a post
tags:
- Posts
x-required-scope: analytics:read
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the analytics:read scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/duplicate:
post:
operationId: posts_duplicate
summary: Copy a post body into a new unscheduled draft
tags:
- Posts
x-required-scope: posts:write
x-idempotency-key: supported
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:write scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/move-to-drafts:
post:
operationId: posts_move_to_drafts
summary: Move a failed post back to drafts for editing
tags:
- Posts
x-required-scope: posts:write
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: Now a draft
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:write scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'409':
description: Not draftable
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/submit:
post:
operationId: posts_submit
summary: Submit a draft for approval
tags:
- Posts
x-required-scope: posts:write
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:write scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/approve:
post:
operationId: posts_approve
summary: Approve a pending post and begin or schedule publishing
tags:
- Posts
x-required-scope: posts:write
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:write scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
/v1/posts/{postId}/reject:
post:
operationId: posts_reject
summary: Reject a pending post with a reason
tags:
- Posts
x-required-scope: posts:write
parameters:
- name: postId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
'401':
description: Missing or invalid bearer token
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
'403':
description: Missing the posts:write scope
content:
application/json:
schema:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorEnvelope'
servers:
- url: https://lovable-anaconda-804.convex.site
components:
schemas:
ErrorEnvelope:
type: object
properties:
code:
type: string
human_message:
type: string
remediation:
type: string
retry_strategy:
type: string
enum:
- none
- immediate
- backoff
- manual
retry_after_ms:
type: number
trace_id:
type: string
cause:
type: string
violations:
type: array
items:
type: object
properties:
platform:
type: string
code:
type: string
rule:
type: string
message:
type: string
required:
- code
- human_message
- remediation
- retry_strategy
- trace_id
MediaItem:
type: object
properties:
mediaId:
type: string
kind:
type: string
enum:
- image
- video
- gif
mimeType:
type: string
bytes:
type: number
durationMs:
type: number
altText:
type: string
description: Accessibility description for image/gif media.
aspectRatio:
type: object
properties:
width:
type: number
height:
type: number
required:
- kind
- mimeType
- bytes
CreatePostBody:
type: object
properties:
projectId:
type: string
text:
type: string
platforms:
type: array
items:
type: string
idempotency_key:
type: string
description: Mandatory unless the Idempotency-Key header is sent. Replaying the same key returns the original post.
schedule:
type: object
description: '{ kind: ''one_shot'', scheduledFor: epoch-ms } or recurring shapes.'
save_as_draft:
type: boolean
overrides:
type: object
description: 'Per-platform diff over the base: { <platform>: { text?, media? } }.'
platform_settings:
type: object
description: Per-platform publish settings, validated against GET /v1/platforms.
media:
type: array
items:
$ref: '#/components/schemas/MediaItem'
required:
- projectId
- text
- platforms
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Org-wide API key from Settings → API keys, or an OAuth 2.1 access token from "Sign in with Dystro". The project is a per-call argument, not part of the credential.
x-refined-from:
- dystro-dev-openapi.json
- dystro-dev-openapi.json