Skip to main content
GET
/
public
/
v1
/
integrations
List Integrations
curl --request GET \
  --url https://api.example.com/public/v1/integrations
{
  "401": {},
  "[]": [
    {
      "id": "<string>",
      "name": "<string>",
      "identifier": "<string>",
      "picture": "<string>",
      "disabled": true,
      "profile": "<string>",
      "customer": {}
    }
  ]
}

Overview

Retrieve a list of all social media accounts and platforms connected to your Postiz organization. Use the integration IDs from this endpoint when creating posts.

Request

No parameters required. Simply call the endpoint with your API key.
GET /public/v1/integrations

Response

Returns an array of integration objects.
[]
array
Array of integration objects

Examples

curl -X GET https://api.postiz.com/public/v1/integrations \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response Example

[
  {
    "id": "integration-123",
    "name": "Twitter (@johndoe)",
    "identifier": "twitter",
    "picture": "https://pbs.twimg.com/profile_images/123.jpg",
    "disabled": false,
    "profile": "@johndoe"
  },
  {
    "id": "integration-456",
    "name": "LinkedIn (John Doe)",
    "identifier": "linkedin",
    "picture": "https://media.licdn.com/profile.jpg",
    "disabled": false,
    "profile": "john-doe"
  },
  {
    "id": "integration-789",
    "name": "Facebook Page (My Business)",
    "identifier": "facebook",
    "picture": "https://graph.facebook.com/picture.jpg",
    "disabled": false,
    "profile": "mybusiness",
    "customer": {
      "id": "customer-001",
      "name": "Acme Corp"
    }
  },
  {
    "id": "integration-101",
    "name": "Reddit (u/johndoe)",
    "identifier": "reddit",
    "picture": "https://styles.redditmedia.com/avatar.png",
    "disabled": true,
    "profile": "u/johndoe"
  }
]

Using Integration IDs

Use the id field when creating posts:
const postiz = new Postiz('YOUR_API_KEY');

// Get integrations
const integrations = await postiz.integrations();

// Find Twitter integration
const twitter = integrations.find(i => i.identifier === 'twitter');

// Create post
await postiz.post({
  type: 'schedule',
  date: '2024-12-31T12:00:00Z',
  shortLink: true,
  tags: [],
  posts: [{
    integration: {
      id: twitter.id  // Use the integration ID here
    },
    value: [{
      content: 'Hello from Postiz!',
      image: []
    }]
  }]
});

Filtering Integrations

Filter integrations by platform or status:
const integrations = await postiz.integrations();

// Get only active integrations
const activeIntegrations = integrations.filter(i => !i.disabled);

// Get integrations by platform
const socialMedia = {
  twitter: integrations.filter(i => i.identifier === 'twitter'),
  linkedin: integrations.filter(i => i.identifier === 'linkedin'),
  facebook: integrations.filter(i => i.identifier === 'facebook')
};

// Get integrations for a specific customer
const customerIntegrations = integrations.filter(
  i => i.customer?.id === 'customer-001'
);

Supported Platforms

Postiz supports 28+ social media and communication platforms:
  • Twitter/X
  • LinkedIn
  • Facebook
  • Instagram
  • Threads
  • TikTok
  • Pinterest
  • Mastodon
  • Bluesky
  • YouTube
  • TikTok
  • Reddit
  • Dev.to
  • Hashnode
  • Medium
  • Dribbble
  • Discord
  • Slack
  • Telegram
  • WhatsApp Business

Checking Integration Status

Before posting, verify that integrations are active:
async function validateIntegrations(integrationIds) {
  const postiz = new Postiz('YOUR_API_KEY');
  const allIntegrations = await postiz.integrations();
  
  const issues = [];
  
  for (const id of integrationIds) {
    const integration = allIntegrations.find(i => i.id === id);
    
    if (!integration) {
      issues.push(`Integration ${id} not found`);
    } else if (integration.disabled) {
      issues.push(`Integration ${integration.name} is disabled`);
    }
  }
  
  return issues;
}

// Usage
const issues = await validateIntegrations(['integration-123', 'integration-456']);
if (issues.length > 0) {
  console.error('Integration issues:', issues);
}

Error Responses

401
Unauthorized
Invalid or missing API key
{
  "msg": "Invalid API key"
}

Notes

Integration IDs are persistent and won’t change unless you disconnect and reconnect the account.
Cache integration lists on the client side to reduce API calls. Integrations rarely change during a session.
Do not attempt to post to disabled integrations. Check the disabled field before creating posts.

Next Steps

Create Post

Use integration IDs to create posts

Integration Settings

Get platform-specific settings schemas (coming soon)

Build docs developers (and LLMs) love