openapi: 3.0.1 info: title: Postiz Public Analytics Integrations API description: Public REST API for Postiz, the open-source social media scheduling and management platform. The same API surface is served by Postiz Cloud (https://api.postiz.com/public/v1) and by any self-hosted Postiz instance (https://{your-domain}/api/public/v1). Authenticate by sending your API key in the Authorization header. The API lets you list connected channels (integrations), find scheduling slots, upload media, and create, list, and delete posts across 30+ supported social, video, community, and blogging platforms. termsOfService: https://postiz.com/terms contact: name: Postiz Support url: https://docs.postiz.com/public-api license: name: AGPL-3.0 url: https://github.com/gitroomhq/postiz-app/blob/main/LICENSE version: '1.0' 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 security: - ApiKeyAuth: [] tags: - name: Integrations description: Connected social media channels and scheduling slots. paths: /integrations: get: tags: - Integrations summary: List all integrations description: Returns all connected social media channels for your organization. operationId: listIntegrations parameters: - name: group in: query required: false description: Filter integrations by customer (group) ID. schema: type: string responses: '200': description: List of integrations content: application/json: schema: type: array items: $ref: '#/components/schemas/Integration' /groups: get: tags: - Integrations summary: List all groups (customers) description: Returns the customer groups configured for your organization. operationId: listGroups responses: '200': description: List of groups content: application/json: schema: type: array items: $ref: '#/components/schemas/Group' /integrations/{id}: delete: tags: - Integrations summary: Delete a channel description: Disconnects and deletes a connected channel by integration ID. operationId: deleteChannel parameters: - name: id in: path required: true description: Integration ID schema: type: string responses: '200': description: Channel deleted /social/{integration}: get: tags: - Integrations summary: Get OAuth connect URL description: Returns the OAuth URL used to connect a new channel for the given provider. operationId: getIntegrationUrl parameters: - name: integration in: path required: true description: Provider identifier (e.g. x, linkedin, facebook). schema: type: string - name: refresh in: query required: false description: Whether to refresh an existing connection. schema: type: boolean responses: '200': description: OAuth connect URL content: application/json: schema: type: object properties: url: type: string /integration-settings/{id}: get: tags: - Integrations summary: Get settings and tools description: Returns the available settings and tools for a connected channel. operationId: getIntegrationSettings parameters: - name: id in: path required: true description: Integration ID schema: type: string responses: '200': description: Integration settings and tools /integration-trigger/{id}: post: tags: - Integrations summary: Trigger an integration tool description: Invokes a named tool/method exposed by a connected channel. operationId: triggerIntegrationTool parameters: - name: id in: path required: true description: Integration ID schema: type: string requestBody: required: true content: application/json: schema: type: object properties: methodName: type: string data: type: object responses: '200': description: Tool triggered /is-connected: get: tags: - Integrations summary: Check connection status description: Verifies that the API key is valid and the account is reachable. operationId: isConnected responses: '200': description: Connection status /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' components: schemas: Group: type: object properties: id: type: string name: type: string 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. 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, sent as the raw value of the Authorization header.