curl --request POST \
--url https://api.madiad.com/v1/posts/document \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"profile_id": "<string>",
"platforms": [],
"document_url": "<string>",
"caption": "<string>",
"scheduled_at": "2023-11-07T05:31:56Z",
"timezone": "<string>"
}
'import requests
url = "https://api.madiad.com/v1/posts/document"
payload = {
"profile_id": "<string>",
"platforms": [],
"document_url": "<string>",
"caption": "<string>",
"scheduled_at": "2023-11-07T05:31:56Z",
"timezone": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
profile_id: '<string>',
platforms: [],
document_url: '<string>',
caption: '<string>',
scheduled_at: '2023-11-07T05:31:56Z',
timezone: '<string>'
})
};
fetch('https://api.madiad.com/v1/posts/document', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.madiad.com/v1/posts/document",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'profile_id' => '<string>',
'platforms' => [
],
'document_url' => '<string>',
'caption' => '<string>',
'scheduled_at' => '2023-11-07T05:31:56Z',
'timezone' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.madiad.com/v1/posts/document"
payload := strings.NewReader("{\n \"profile_id\": \"<string>\",\n \"platforms\": [],\n \"document_url\": \"<string>\",\n \"caption\": \"<string>\",\n \"scheduled_at\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.madiad.com/v1/posts/document")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"profile_id\": \"<string>\",\n \"platforms\": [],\n \"document_url\": \"<string>\",\n \"caption\": \"<string>\",\n \"scheduled_at\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.madiad.com/v1/posts/document")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"profile_id\": \"<string>\",\n \"platforms\": [],\n \"document_url\": \"<string>\",\n \"caption\": \"<string>\",\n \"scheduled_at\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "completed",
"profile_id": "<string>",
"platforms": [
"<string>"
],
"failed_platforms": [
"<string>"
],
"request_id": "<string>",
"job_id": "<string>",
"results": {}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}Đăng bài tài liệu
Đăng tệp PDF, PPT, PPTX, DOC hoặc DOCX. caption trở thành tên tài liệu trên bài.
curl --request POST \
--url https://api.madiad.com/v1/posts/document \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"profile_id": "<string>",
"platforms": [],
"document_url": "<string>",
"caption": "<string>",
"scheduled_at": "2023-11-07T05:31:56Z",
"timezone": "<string>"
}
'import requests
url = "https://api.madiad.com/v1/posts/document"
payload = {
"profile_id": "<string>",
"platforms": [],
"document_url": "<string>",
"caption": "<string>",
"scheduled_at": "2023-11-07T05:31:56Z",
"timezone": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
profile_id: '<string>',
platforms: [],
document_url: '<string>',
caption: '<string>',
scheduled_at: '2023-11-07T05:31:56Z',
timezone: '<string>'
})
};
fetch('https://api.madiad.com/v1/posts/document', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.madiad.com/v1/posts/document",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'profile_id' => '<string>',
'platforms' => [
],
'document_url' => '<string>',
'caption' => '<string>',
'scheduled_at' => '2023-11-07T05:31:56Z',
'timezone' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.madiad.com/v1/posts/document"
payload := strings.NewReader("{\n \"profile_id\": \"<string>\",\n \"platforms\": [],\n \"document_url\": \"<string>\",\n \"caption\": \"<string>\",\n \"scheduled_at\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.madiad.com/v1/posts/document")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"profile_id\": \"<string>\",\n \"platforms\": [],\n \"document_url\": \"<string>\",\n \"caption\": \"<string>\",\n \"scheduled_at\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.madiad.com/v1/posts/document")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"profile_id\": \"<string>\",\n \"platforms\": [],\n \"document_url\": \"<string>\",\n \"caption\": \"<string>\",\n \"scheduled_at\": \"2023-11-07T05:31:56Z\",\n \"timezone\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "completed",
"profile_id": "<string>",
"platforms": [
"<string>"
],
"failed_platforms": [
"<string>"
],
"request_id": "<string>",
"job_id": "<string>",
"results": {}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>"
}
}Ủy quyền
API key của bạn, gửi ở header Authorization: Bearer <key>. Một key quản lý mọi hồ sơ trong tài khoản.
Tiêu đề
Khoá bạn tự sinh cho TỪNG bài, ghi xuống TRƯỚC khi gọi. Dùng lại một khoá đã hoàn tất thì API trả về kết quả cũ chứ không đăng bài mới — nhìn từ ngoài giống hệt bị bỏ qua trong im lặng. Dùng lại cho một thân yêu cầu KHÁC thì nhận idempotency_conflict.
Nội dung
Id của hồ sơ thương hiệu cần thao tác. Lấy danh sách bằng GET /v1/profiles.
Các kênh cần đăng. Nhận cả chuỗi các mã cách nhau bằng dấu phẩy.
tiktok, instagram, linkedin, youtube, facebook, x, threads, pinterest, reddit, bluesky, google_business, telegram, discord, slack, mastodon, nostr, lemmy, devto, hashnode, wordpress, whop, listmonk Địa chỉ https:// của tài liệu cần đăng.
PHẦN THÂN của bài. Đây KHÔNG phải tiêu đề: title (và <kênh>_title cho riêng từng kênh) là trường khác. Nhét thân bài vào title thì bài vẫn đăng được nên rất khó phát hiện, nhưng nó đi vòng qua phép kiểm độ dài thân bài.
Đăng vào thời điểm này thay vì đăng ngay (ISO 8601). Đi kèm timezone.
Múi giờ IANA cho scheduled_at, ví dụ Asia/Ho_Chi_Minh.
Phản hồi
Thành công.
processing và scheduled chưa phải kết quả — tra lại bằng GET /v1/posts/status.
completed, partial, failed, processing, scheduled Chỉ xuất hiện khi có ít nhất một kênh từ chối.
Khoá theo tên kênh.
Show child attributes
Show child attributes

