Postiz Integrations API
Connected social media channels and scheduling slots.
Connected social media channels and scheduling slots.
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/postiz-integrations-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: Postiz Integrations API
version: '1.0'
description: 'Operations tagged Integrations across 2 of this provider''s published API definitions: postiz-platform-swagger-openapi.json, postiz-public-api-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.postiz.com/public/v1
description: Postiz Cloud
- url: https://{your-domain}/api/public/v1
description: Self-hosted
variables:
your-domain:
default: localhost:5000
description: Your Postiz instance domain
tags:
- name: Integrations
paths:
/integrations:
get:
operationId: NoAuthIntegrationsController_getIntegrations
parameters: []
responses:
'200':
description: ''
tags:
- Integrations
summary: No auth integrations controller get integrations
x-summary-source: derived
delete:
operationId: IntegrationsController_deleteChannel
parameters: []
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller delete channel
x-summary-source: derived
/integrations/social-connect/{integration}:
post:
operationId: NoAuthIntegrationsController_connectSocialMedia
parameters:
- name: integration
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConnectIntegrationDto'
responses:
'201':
description: ''
tags:
- Integrations
summary: No auth integrations controller connect social media
x-summary-source: derived
/integrations/public/provider/{id}/connect:
post:
operationId: NoAuthIntegrationsController_saveProviderPage
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'201':
description: ''
tags:
- Integrations
summary: No auth integrations controller save provider page
x-summary-source: derived
/integrations/extension-refresh:
post:
operationId: NoAuthIntegrationsController_extensionRefreshCookies
parameters: []
responses:
'201':
description: ''
tags:
- Integrations
summary: No auth integrations controller extension refresh cookies
x-summary-source: derived
/integrations/provider/{id}/connect:
post:
operationId: IntegrationsController_saveProviderPage
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'201':
description: ''
tags:
- Integrations
summary: Integrations controller save provider page
x-summary-source: derived
/integrations/{identifier}/internal-plugs:
get:
operationId: IntegrationsController_getInternalPlugs
parameters:
- name: identifier
required: true
in: path
schema:
type: string
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller get internal plugs
x-summary-source: derived
/integrations/customers:
get:
operationId: IntegrationsController_getCustomers
parameters: []
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller get customers
x-summary-source: derived
/integrations/{id}/group:
put:
operationId: IntegrationsController_updateIntegrationGroup
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller update integration group
x-summary-source: derived
/integrations/{id}/customer-name:
put:
operationId: IntegrationsController_updateOnCustomerName
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller update on customer name
x-summary-source: derived
/integrations/list:
get:
operationId: IntegrationsController_getIntegrationList
parameters: []
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller get integration list
x-summary-source: derived
/integrations/{id}/settings:
post:
operationId: IntegrationsController_updateProviderSettings
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'201':
description: ''
tags:
- Integrations
summary: Integrations controller update provider settings
x-summary-source: derived
/integrations/{id}/nickname:
post:
operationId: IntegrationsController_setNickname
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'201':
description: ''
tags:
- Integrations
summary: Integrations controller set nickname
x-summary-source: derived
/integrations/{id}:
get:
operationId: IntegrationsController_getSingleIntegration
parameters:
- name: id
required: true
in: path
schema:
type: string
- name: order
required: true
in: query
schema:
type: string
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller get single integration
x-summary-source: derived
delete:
tags:
- Integrations
summary: Delete a channel
description: Delete a connected channel by its integration ID. Any scheduled posts associated with this channel will also be deleted.
operationId: deleteChannel
parameters:
- name: id
in: path
required: true
description: Integration ID of the channel to delete
schema:
type: string
responses:
'200':
description: Channel deleted successfully
content:
application/json:
schema:
type: object
properties:
id:
type: string
example:
id: cm4ean69r0003w8w1cdomox9n
'404':
description: Channel not found
/integrations/social/{integration}:
get:
operationId: IntegrationsController_getIntegrationUrl
parameters:
- name: integration
required: true
in: path
schema:
type: string
- name: refresh
required: true
in: query
schema:
type: string
- name: externalUrl
required: true
in: query
schema:
type: string
- name: redirectUrl
required: true
in: query
schema:
type: string
- name: onboarding
required: true
in: query
schema:
type: string
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller get integration url
x-summary-source: derived
/integrations/{id}/time:
post:
operationId: IntegrationsController_setTime
parameters:
- name: id
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationTimeDto'
responses:
'201':
description: ''
tags:
- Integrations
summary: Integrations controller set time
x-summary-source: derived
/integrations/mentions:
post:
operationId: IntegrationsController_mentions
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationFunctionDto'
responses:
'201':
description: ''
tags:
- Integrations
summary: Integrations controller mentions
x-summary-source: derived
/integrations/function:
post:
operationId: IntegrationsController_functionIntegration
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/IntegrationFunctionDto'
responses:
'201':
description: ''
tags:
- Integrations
summary: Integrations controller function integration
x-summary-source: derived
/integrations/disable:
post:
operationId: IntegrationsController_disableChannel
parameters: []
responses:
'201':
description: ''
tags:
- Integrations
summary: Integrations controller disable channel
x-summary-source: derived
/integrations/enable:
post:
operationId: IntegrationsController_enableChannel
parameters: []
responses:
'201':
description: ''
tags:
- Integrations
summary: Integrations controller enable channel
x-summary-source: derived
/integrations/plug/list:
get:
operationId: IntegrationsController_getPlugList
parameters: []
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller get plug list
x-summary-source: derived
/integrations/{id}/plugs:
get:
operationId: IntegrationsController_getPlugsByIntegrationId
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller get plugs by integration id
x-summary-source: derived
post:
operationId: IntegrationsController_postPlugsByIntegrationId
parameters:
- name: id
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PlugDto'
responses:
'201':
description: ''
tags:
- Integrations
summary: Integrations controller post plugs by integration id
x-summary-source: derived
/integrations/plugs/{id}/activate:
put:
operationId: IntegrationsController_changePlugActivation
parameters:
- name: id
required: true
in: path
schema:
type: string
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller change plug activation
x-summary-source: derived
/integrations/telegram/updates:
get:
operationId: IntegrationsController_getUpdates
parameters: []
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller get updates
x-summary-source: derived
/integrations/moltbook/register:
post:
operationId: IntegrationsController_moltbookRegister
parameters: []
responses:
'201':
description: ''
tags:
- Integrations
summary: Integrations controller moltbook register
x-summary-source: derived
/integrations/moltbook/status:
get:
operationId: IntegrationsController_moltbookStatus
parameters:
- name: apiKey
required: true
in: query
schema:
type: string
responses:
'200':
description: ''
tags:
- Integrations
summary: Integrations controller moltbook status
x-summary-source: derived
/groups:
get:
tags:
- Integrations
summary: List all groups (customers)
description: Returns all customers (groups) for your organization. Use a group ID to filter the integrations list.
operationId: listGroups
responses:
'200':
description: List of groups
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Group'
example:
- id: customer-id
name: My Company
security:
- ApiKeyAuth: []
servers:
- url: https://api.postiz.com/public/v1
description: Postiz Cloud
- url: https://{your-domain}/api/public/v1
description: Self-hosted
variables:
your-domain:
default: localhost:5000
description: Your Postiz instance domain
/social/{integration}:
get:
tags:
- Integrations
summary: Get OAuth URL for a channel
description: Generate an OAuth authorization URL for a given integration. Use this to connect a new social media channel. Only OAuth-based integrations are supported (integrations that require an external URL, such as Mastodon, are not available via this endpoint).
operationId: getIntegrationUrl
parameters:
- name: integration
in: path
required: true
description: The integration identifier (e.g. x, linkedin, facebook, instagram, youtube, tiktok, reddit, etc.)
schema:
type: string
- name: refresh
in: query
required: false
description: Pass an existing integration ID to refresh its OAuth token instead of creating a new connection
schema:
type: string
responses:
'200':
description: OAuth authorization URL
content:
application/json:
schema:
type: object
properties:
url:
type: string
description: The OAuth authorization URL to redirect the user to
example:
url: https://twitter.com/i/oauth2/authorize?response_type=code&client_id=...
'400':
description: Integration not allowed or requires an external URL
security:
- ApiKeyAuth: []
servers:
- url: https://api.postiz.com/public/v1
description: Postiz Cloud
- url: https://{your-domain}/api/public/v1
description: Self-hosted
variables:
your-domain:
default: localhost:5000
description: Your Postiz instance domain
/integration-settings/{id}:
get:
tags:
- Integrations
summary: Get integration settings and tools
description: Returns the posting rules, maximum content length, settings schema, and available provider tools for a connected channel. Use this to discover which tools can be executed with the trigger endpoint.
operationId: getIntegrationSettings
parameters:
- name: id
in: path
required: true
description: The integration ID
schema:
type: string
responses:
'200':
description: Settings and tools for the integration
content:
application/json:
schema:
type: object
properties:
output:
type: object
properties:
rules:
type: string
description: Platform-specific posting rules
maxLength:
type: number
description: Maximum content length
settings:
description: JSON schema of the provider settings, or a string when no settings are required
tools:
type: array
description: Provider tools that can be executed via the trigger endpoint
items:
type: object
properties:
methodName:
type: string
description:
type: string
dataSchema:
type: array
items:
type: object
example:
output:
rules: Instagram should have at least one attachment, if it's a story, it can have only one picture
maxLength: 2200
settings:
type: object
tools:
- methodName: audioSearch
description: Search audio (music or original sounds) to attach to a Reel via the "audio" setting, an empty query returns trending audio
dataSchema:
- key: q
type: string
description: Search query, leave empty for trending audio
- key: type
type: string
description: Either "music" or "original_sound", defaults to "music"
'404':
description: Integration not found
security:
- ApiKeyAuth: []
servers:
- url: https://api.postiz.com/public/v1
description: Postiz Cloud
- url: https://{your-domain}/api/public/v1
description: Self-hosted
variables:
your-domain:
default: localhost:5000
description: Your Postiz instance domain
/integration-trigger/{id}:
post:
tags:
- Integrations
summary: Trigger an integration tool
description: Executes a provider-specific tool on a connected channel, for example searching Instagram audio for Reels, listing Discord channels, or fetching Reddit flairs. Discover available tools with the integration settings endpoint.
operationId: triggerIntegrationTool
parameters:
- name: id
in: path
required: true
description: The integration ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- methodName
properties:
methodName:
type: string
description: The tool method name, as returned by the integration settings endpoint
data:
type: object
description: Key-value parameters for the tool
additionalProperties:
type: string
example:
methodName: audioSearch
data:
q: summer vibes
type: music
responses:
'200':
description: Tool executed successfully
content:
application/json:
schema:
type: object
properties:
output:
description: The tool result, shape depends on the tool
example:
output:
- id: '587784541076604'
title: Summer Vibes
artist: Some Artist
image: https://scontent.cdninstagram.com/cover.jpg
duration: 30000
previewUrl: https://scontent.cdninstagram.com/preview.mp4
'401':
description: Channel disconnected due to expired token
'404':
description: Integration or tool not found
security:
- ApiKeyAuth: []
servers:
- url: https://api.postiz.com/public/v1
description: Postiz Cloud
- url: https://{your-domain}/api/public/v1
description: Self-hosted
variables:
your-domain:
default: localhost:5000
description: Your Postiz instance domain
/is-connected:
get:
tags:
- Integrations
summary: Check connection status
description: Verify if your API key is valid and connected.
operationId: isConnected
responses:
'200':
description: Connection status
content:
application/json:
schema:
type: object
properties:
connected:
type: boolean
example:
connected: true
security:
- ApiKeyAuth: []
servers:
- url: https://api.postiz.com/public/v1
description: Postiz Cloud
- url: https://{your-domain}/api/public/v1
description: Self-hosted
variables:
your-domain:
default: localhost:5000
description: Your Postiz instance domain
/find-slot/{id}:
get:
tags:
- Integrations
summary: Find next available slot
description: Get the next available time slot for posting to a specific channel.
operationId: findSlot
parameters:
- name: id
in: path
required: true
description: Integration ID
schema:
type: string
responses:
'200':
description: Next available slot
content:
application/json:
schema:
type: object
properties:
date:
type: string
format: date-time
example:
date: '2025-01-15T10:00:00.000Z'
security:
- ApiKeyAuth: []
servers:
- url: https://api.postiz.com/public/v1
description: Postiz Cloud
- url: https://{your-domain}/api/public/v1
description: Self-hosted
variables:
your-domain:
default: localhost:5000
description: Your Postiz instance domain
components:
schemas:
IntegrationTimeDto:
type: object
properties: {}
PlugDto:
type: object
properties: {}
ConnectIntegrationDto:
type: object
properties: {}
IntegrationFunctionDto:
type: object
properties: {}
Group:
type: object
properties:
id:
type: string
description: Unique group (customer) ID
name:
type: string
description: Group (customer) display name
Integration:
type: object
properties:
id:
type: string
description: Unique integration ID
name:
type: string
description: Display name of the account
identifier:
type: string
description: Provider identifier (27 platforms supported)
enum:
- x
- linkedin
- linkedin-page
- facebook
- instagram
- instagram-standalone
- threads
- bluesky
- mastodon
- warpcast
- nostr
- vk
- youtube
- tiktok
- reddit
- lemmy
- discord
- slack
- telegram
- kick
- twitch
- pinterest
- dribbble
- medium
- devto
- hashnode
- wordpress
- gmb
- listmonk
- moltbook
- skool
- whop
picture:
type: string
description: Profile picture URL
disabled:
type: boolean
description: Whether the integration is disabled
profile:
type: string
description: Profile handle/username
customer:
type: object
properties:
id:
type: string
name:
type: string
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: Authorization
description: Your Postiz API key
x-refined-from:
- postiz-platform-swagger-openapi.json
- postiz-public-api-openapi.json