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 Authentication API
x-logo:
url: assets/image/b2slogo.png
backgroundColor: '#FFFFFF'
altText: Blog2Social API
servers:
- url: https://api.blog2social.com/rest/v1.0
tags:
- name: Authentication
paths:
/user/auth:
post:
tags:
- Authentication
summary: Getting an Access Token
description: 'Get an access_token for a new user.
Note: Access tokens currently have a fixed validity period of 10 years. Automatic token refresh is planned for a future API release but is not available at this time.'
operationId: authenticateUser
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- service_token
properties:
service_token:
type: string
description: The token for your service
example:
service_token: YOUR_SERVICE_TOKEN
x-codeSamples:
- lang: cURL
source: "curl -X POST https://api.blog2social.com/rest/v1.0/user/auth \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"service_token\": \"YOUR_SERVICE_TOKEN\"\n}'"
- lang: PHP
source: "<?php\n\n$payload = [\n 'service_token' => 'YOUR_SERVICE_TOKEN',\n];\n\n$curl = curl_init('https://api.blog2social.com/rest/v1.0/user/auth');\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: Created
content:
application/json:
schema:
$ref: '#/components/schemas/UserAuthSuccess'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/error_500'
/user/list:
post:
tags:
- Authentication
summary: List OAuth user
description: List existing and active OAuth user
operationId: listUser
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- service_token
properties:
service_token:
type: string
description: The token for your service
example:
service_token: YOUR_SERVICE_TOKEN
x-codeSamples:
- lang: cURL
source: "curl -X POST https://api.blog2social.com/rest/v1.0/user/list \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"service_token\": \"YOUR_SERVICE_TOKEN\"\n}'"
- lang: PHP
source: "<?php\n\n$payload = [\n 'service_token' => 'YOUR_SERVICE_TOKEN',\n];\n\n$curl = curl_init('https://api.blog2social.com/rest/v1.0/user/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/ListUserArray'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/error_500'
/user/delete:
post:
tags:
- Authentication
summary: Delete OAuth user
description: Delete OAuth user from your service
operationId: deleteUser
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- service_token
- users
properties:
service_token:
type: string
description: The token for your service
users:
type: array
example:
- 123
- 456
- 789
description: List of OAuth user IDs to delete.
items:
type: integer
example:
service_token: YOUR_SERVICE_TOKEN
users:
- 123
- 456
- 789
x-codeSamples:
- lang: cURL
source: "curl -X POST https://api.blog2social.com/rest/v1.0/user/delete \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"service_token\": \"YOUR_SERVICE_TOKEN\",\n \"users\": [\n 123,\n 456,\n 789\n ]\n}'"
- lang: PHP
source: "<?php\n\n$payload = [\n 'service_token' => 'YOUR_SERVICE_TOKEN',\n 'users' => [\n 123,\n 456,\n 789,\n ],\n];\n\n$curl = curl_init('https://api.blog2social.com/rest/v1.0/user/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:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteUserArray'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/error_500'
components:
schemas:
ListUserArray:
type: object
properties:
users:
type: array
items:
$ref: '#/components/schemas/ListUserItem'
ListUserItem:
type: object
properties:
client_user_id:
type: integer
example: '1'
access_token:
type: string
example: b2s_abcdef123546
description: The access token for the authenticated user.
refresh_token:
type: string
example: b2s_abcdef123546
access_date_time:
type: string
example: '2001-01-01 01:01:01'
refresh_date_time:
type: string
example: '2001-01-01 01:01:01'
error_500:
description: Internal Server Error
type: object
properties:
error_code:
type: integer
example: 500
error_message:
type: string
example: interal server error
DeleteUserArray:
type: object
properties:
details:
type: array
items:
$ref: '#/components/schemas/DeleteUserItem'
UserAuthSuccess:
type: object
properties:
access_token:
type: string
example: YOUR_ACCESS_TOKEN
description: The access token for the authenticated user.
refresh_token:
type: string
example: qwe111rtz222uio333
expired_in:
type: string
example: unix-timestamp
description: string (unix-timestamp)
DeleteUserItem:
type: object
properties:
client_user_id:
type: integer
example: '1'
deleted:
type: boolean
example: true | false
error:
type: string
example: empty | error_message