Liệt kê loại nội dung
curl --request GET \
--url https://app.getkavio.app/api/content-types \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.getkavio.app/api/content-types"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.getkavio.app/api/content-types', 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://app.getkavio.app/api/content-types",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.getkavio.app/api/content-types"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.getkavio.app/api/content-types")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.getkavio.app/api/content-types")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyNền tảng
Liệt kê loại nội dung
Liệt kê content_type hợp lệ của từng nền tảng cùng các giới hạn về độ dài, loại nội dung đa phương tiện và content_type mặc định.
GET
/
content-types
Liệt kê loại nội dung
curl --request GET \
--url https://app.getkavio.app/api/content-types \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.getkavio.app/api/content-types"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.getkavio.app/api/content-types', 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://app.getkavio.app/api/content-types",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.getkavio.app/api/content-types"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.getkavio.app/api/content-types")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.getkavio.app/api/content-types")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyKhi nào cần endpoint này
POST /api/posts và PUT /api/posts/{id} nhận mảng platforms[]; mỗi mục có social_account_id và content_type. Giá trị content_type hợp lệ tùy theo nền tảng, chẳng hạn linkedin_post cho LinkedIn, x_post cho X, hoặc instagram_feed / instagram_carousel / instagram_reel / instagram_story cho Instagram.
Endpoint này cung cấp danh mục để ứng dụng tạo payload đúng mà không cần viết cứng bảng ánh xạ.
Phản hồi
{
"platforms": [
{
"platform": "linkedin",
"label": "LinkedIn",
"max_content_length": 3000,
"recommended_content_length": 1200,
"allowed_media_types": ["image", "video"],
"default_content_type": "linkedin_post",
"content_types": [
{
"value": "linkedin_post",
"label": "Post",
"description": "A standard LinkedIn post.",
"max_media_count": 1,
"requires_media": false
},
{
"value": "linkedin_carousel",
"label": "Carousel",
"description": "A LinkedIn document carousel post.",
"max_media_count": 20,
"requires_media": true
}
]
},
{
"platform": "x",
"label": "X",
"max_content_length": 280,
"recommended_content_length": 220,
"allowed_media_types": ["image", "video"],
"default_content_type": "x_post",
"content_types": [
{
"value": "x_post",
"label": "Post",
"description": "A standard X post.",
"max_media_count": 4,
"requires_media": false
}
]
}
]
}
curl https://app.getkavio.app/api/content-types \
-H "Authorization: Bearer YOUR_API_KEY"
Thông tin các trường
| Trường | Mô tả |
|---|---|
platform | Mã nền tảng dùng trong social_accounts.platform (ví dụ linkedin, x, instagram). |
max_content_length | Giới hạn cứng được kiểm tra khi lên lịch (qua ContentFitsPlatformLimits) và khi đăng. Bài quá dài sẽ bị từ chối, không bị cắt; quá trình lên lịch trả về lỗi xác thực, còn quá trình đăng báo lỗi độ dài cho nền tảng. |
recommended_content_length | Độ dài khuyến nghị cho một bài đăng hiệu quả trên nền tảng, hữu ích khi tạo nội dung bằng AI. |
allowed_media_types | Loại nội dung đa phương tiện nền tảng chấp nhận (image, video). |
default_content_type | content_type dùng khi bên gọi không chọn giá trị. |
content_types[].value | Giá trị cần truyền vào platforms[].content_type khi gọi POST /api/posts. |
content_types[].max_media_count | Số mục đa phương tiện tối đa của định dạng. |
content_types[].requires_media | Có bắt buộc ít nhất một mục đa phương tiện hay không, chẳng hạn Instagram Story. |

