Skip to main content

Developer documentation

API docs for multi-platform publishing workflows.

Start with authentication, connected account discovery, media requirements, photo carousel payloads, status tracking, and TikTok QR login. Each guide is structured for server-side integrations and content team workflows.

Server-side quick start

Keep API keys in your backend or serverless environment. Do not expose keys in browser code.

const API_BASE_URL = 'https://api.wahdx.com';
const API_KEY = process.env.WAHDX_API_KEY;

await fetch(API_BASE_URL + '/api/content/post', {
  method: 'POST',
  headers: {
    'X-API-Key': API_KEY,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(
    {
      "platform": "instagram",
      "accountId": "YOUR_CONNECTED_ACCOUNT_ID",
      "content": "Campaign caption",
      "mediaItems": [
        {
          "url": "https://your-domain.com/video.mp4"
        }
      ]
    }
  )
});

Endpoint model

Video and photo carousel use the same publishing endpoint.

The difference is not the endpoint. Use POST /api/content/post for TikTok, Instagram, Facebook, and Threads. The backend detects video or photo carousel from mediaItems URL extensions, then validates limits for the selected platform.

// Video and photo carousel use the SAME endpoint:
// POST /api/content/post

const videoPayload = {
  "platform": "tiktok",
  "accountId": "CONNECTED_ACCOUNT_ID",
  "content": "Video caption",
  "mediaItems": [
    {
      "url": "https://your-domain.com/video.mp4"
    }
  ]
};

const photoCarouselPayload = {
  "platform": "tiktok",
  "accountId": "CONNECTED_ACCOUNT_ID",
  "photoTitle": "Carousel title",
  "content": "Carousel caption",
  "mediaItems": [
    {
      "url": "https://your-domain.com/photo-1.jpg"
    },
    {
      "url": "https://your-domain.com/photo-2.jpg"
    }
  ]
};