Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
description: 'Get API Key
## Blog2Social API
### One API 25+ Social Platforms
Connect, manage and publish content across 25+ social media, blogging and community platforms through a single integration. Instead of building and maintaining separate integrations for every platform, Blog2Social provides one centralized API for publishing text, links, images and videos at scale. Whether you are building a SaaS platform, CMS, marketing automation solution, agency dashboard, e-commerce platform or enterprise application, Blog2Social helps you automate social media publishing while reducing development effort and maintenance costs. ### Key Benefits
- One integration for 25+ social media and publishing platforms
- Publish content across multiple networks simultaneously
- Connect profiles, pages and groups through one API
- Support for text, links, images and videos
- Retrieve social media insights and performance metrics
- Automate publishing workflows and content distribution
- Scale from a single user to thousands of connected accounts
## Supported Platforms
Schedule, publish and manage content across social media, blogging, business and community platforms through a single API. Connect accounts, publish content, upload media, retrieve insights and automate social media distribution from one centralized interface. | Platform | Post Types | Media |
|-----------|-----------|-----------|
| Facebook | Posts, Reels | Links, Images, Videos |
| X | Posts | Links, Images, Videos |
| LinkedIn | Posts | Links, Images, Videos |
| Instagram | Posts | Images, Videos |
| Pinterest | Pins, Boards | Images, Videos |
| Reddit | Posts, Subreddits | Links, Images |
| Tumblr | Posts | Links, Images, Videos |
| Medium | Articles | Images |
| Telegram | Messages | Links, Images |
| TikTok | Posts | Images, Videos |
| YouTube | Videos, Shorts, Playlists | Videos |
| Vimeo | Videos | Videos |
| Bluesky | Posts | Links, Images |
| Threads | Posts | Links, Images, Videos |
| Mastodon | Posts | Links, Images, Videos |
| Discord | Messages | Images, Videos |
| Google Business Profile | Business Posts | Images |
| VK (VKontakte) | Posts | Links, Images |
| Xing | Posts | Links, Images |
| Blogger | Articles | Images |
| DEV.to | Articles | Images, Videos |
| Flickr | Media Posts | Images, Videos |
| Diigo | Bookmarks | Links |
| Bloglovin | Blog Posts | Images |
| Torial | Articles | Images |
| Ravelry | Posts | Images |
| Instapaper | Saved Content | Links |
| Band | Posts | Images |
| HumHub | Posts | Images |
The Blog2Social API provides a unified interface for publishing content across social media networks, blogging platforms, business networks, video platforms and community platforms. ---
### Platform Features
- Multi-network publishing
- Link, image and video publishing
- Profiles, pages and groups
- Boards, playlists and categories
- Post insights and analytics
- Video upload support
- Automated publishing workflows
---
# Quick Start Guide
Get your first social media post published in less than 5 minutes. ## Authentication Model
The API uses a two-layer authentication model:
service_token = your application
access_token = your user
Think of the service_token as your app key and the access_token as the user''s session token. Most API requests require both tokens. ## Prerequisites
- A free Blog2Social API account to get started. ## Step 1: Get Your API Key
Navigate to the My Apps section in your Blog2Social API Console and click Create App. Once the application has been created, copy the generated service_token and store it securely. The service_token uniquely identifies your application and is required for all API requests. ## Step 2: Authenticate User
POST /user/auth
Request:
```json
{
"service_token": "YOUR_SERVICE_TOKEN"
}
```
Response:
```json
{
"access_token": "USER_ACCESS_TOKEN",
"refresh_token": "REFRESH_TOKEN"
}
```
Save the access_token for all future API requests.'
version: 1.0.0
title: Blog2Social User API
x-logo:
url: assets/image/b2slogo.png
backgroundColor: '#FFFFFF'
altText: Blog2Social API
servers:
- url: https://api.blog2social.com/rest/v1.0
tags:
- name: User
paths:
/user/auth/list:
post:
tags:
- User
summary: List User Connection
description: 'Get a list of all authorizations from a User
Results are cached for 30 minutes. (Cache will be cleared on any action to a authorization)'
operationId: listAuth
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
service_token:
type: string
description: The token for your service
access_token:
type: string
description: The access token for the authenticated user.
required:
- service_token
- access_token
example:
service_token: YOUR_SERVICE_TOKEN
access_token: YOUR_ACCESS_TOKEN
x-codeSamples:
- lang: cURL
source: "curl -X POST https://api.blog2social.com/rest/v1.0/user/auth/list \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"service_token\": \"YOUR_SERVICE_TOKEN\",\n \"access_token\": \"YOUR_ACCESS_TOKEN\"\n}'"
- lang: PHP
source: "<?php\n\n$payload = [\n 'service_token' => 'YOUR_SERVICE_TOKEN',\n 'access_token' => 'YOUR_ACCESS_TOKEN',\n];\n\n$curl = curl_init('https://api.blog2social.com/rest/v1.0/user/auth/list');\n\ncurl_setopt_array($curl, [\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_POST => true,\n CURLOPT_HTTPHEADER => [\n 'Content-Type: application/json',\n ],\n CURLOPT_POSTFIELDS => json_encode($payload),\n]);\n\n$response = curl_exec($curl);\n$error = curl_error($curl);\n\n$curl = null;\n\nif ($response === false) {\n throw new RuntimeException($error);\n}\n\necho $response;"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AuthList'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/error_1002'
'401':
description: Unauthorized
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/error_401'
- $ref: '#/components/schemas/error_1001'
- $ref: '#/components/schemas/error_1003'
'500':
description: Interal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/error_500'
/user/auth/delete:
post:
tags:
- User
summary: Delete User Connection
description: Delete a authorization from a User
operationId: delete
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
service_token:
type: string
description: The token for your service
access_token:
type: string
description: The access token for the authenticated user.
client_user_network_id:
type: integer
description: The ID of the user's connected social media account authorization.
required:
- service_token
- access_token
- client_user_network_id
example:
service_token: YOUR_SERVICE_TOKEN
access_token: YOUR_ACCESS_TOKEN
client_user_network_id: YOUR_CLIENT_USER_NETWORK_ID
x-codeSamples:
- lang: cURL
source: "curl -X POST https://api.blog2social.com/rest/v1.0/user/auth/delete \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"service_token\": \"YOUR_SERVICE_TOKEN\",\n \"access_token\": \"YOUR_ACCESS_TOKEN\",\n \"client_user_network_id\": YOUR_CLIENT_USER_NETWORK_ID\n}'"
- lang: PHP
source: "<?php\n\n$payload = [\n 'service_token' => 'YOUR_SERVICE_TOKEN',\n 'access_token' => 'YOUR_ACCESS_TOKEN',\n 'client_user_network_id' => YOUR_CLIENT_USER_NETWORK_ID,\n];\n\n$curl = curl_init('https://api.blog2social.com/rest/v1.0/user/auth/delete');\n\ncurl_setopt_array($curl, [\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_POST => true,\n CURLOPT_HTTPHEADER => [\n 'Content-Type: application/json',\n ],\n CURLOPT_POSTFIELDS => json_encode($payload),\n]);\n\n$response = curl_exec($curl);\n$error = curl_error($curl);\n\n$curl = null;\n\nif ($response === false) {\n throw new RuntimeException($error);\n}\n\necho $response;"
responses:
'201':
description: Connected social media account removed successfully
content:
application/json:
schema:
type: object
required:
- success
properties:
success:
type: boolean
description: True if the connected social media account was removed successfully.
example:
success: true
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/error_1002'
'401':
description: Unauthorized
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/error_401'
- $ref: '#/components/schemas/error_1001'
- $ref: '#/components/schemas/error_1003'
'500':
description: Interal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/error_500'
components:
schemas:
error_1002:
type: object
properties:
error_code:
type: integer
example: 1002
error_message:
type: string
example: required parameter missing {PARAMETER}
error_1003:
type: object
properties:
error_code:
type: integer
example: 1003
error_message:
type: string
example: access token invalid
error_1001:
type: object
properties:
error_code:
type: integer
example: 1001
error_message:
type: string
example: access token required
error_500:
description: Internal Server Error
type: object
properties:
error_code:
type: integer
example: 500
error_message:
type: string
example: interal server error
error_401:
description: Unauthorized
type: object
properties:
error_code:
type: integer
example: 401
error_message:
type: string
example: unauthorized
AuthList:
type: array
items:
type: object
properties:
client_user_id:
type: integer
example: 1
description: User ID
client_user_network_id:
type: integer
example: 3241
description: Authorization ID
network_id:
type: integer
example: 2
description: Network ID
type:
type: string
example: profile
description: Written out network_type_id profile, page or group
type_kind:
type: integer
example: 0
description: Only for XING-Pages: 0 = CompanyPage; 1 = BusinessPage; 2 = Forum, 3 = Marketplace, 4 = Employer Branding Profile
type_id:
type: string
example: 3122312323378-8232312
description: Exp. Facebook Page-ID
display_name:
type: string
description: The display name
instant_sharing:
type: integer
example: 0
description: Indicate whether it's instant sharing or not; Enabled for Facebook-Profiles
expired_date:
type: string
example: '2022-07-03 14:00:00'
description: Shows authorization expire-date (YYYY-MM-DD hh:mm:ss UTC+0000)
last_user_update_date:
type: string
example: '2021-07-03 14:00:00'
description: '''Date at wich the authorization was last updated (YYYY-MM-DD hh:mm:ss UTC+0000)'''
name:
type: string
example: X
description: Name of the network