curl --request POST \
--url https://api.aisa.one/apis/v1/social/posts/{postId}/update-metadata \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"platform": "youtube"
}
'import requests
url = "https://api.aisa.one/apis/v1/social/posts/{postId}/update-metadata"
payload = { "platform": "youtube" }
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({platform: 'youtube'})
};
fetch('https://api.aisa.one/apis/v1/social/posts/{postId}/update-metadata', 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.aisa.one/apis/v1/social/posts/{postId}/update-metadata",
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([
'platform' => 'youtube'
]),
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.aisa.one/apis/v1/social/posts/{postId}/update-metadata"
payload := strings.NewReader("{\n \"platform\": \"youtube\"\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.aisa.one/apis/v1/social/posts/{postId}/update-metadata")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"platform\": \"youtube\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/social/posts/{postId}/update-metadata")
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 \"platform\": \"youtube\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"success": true,
"updatedFields": [
"<string>"
],
"videoId": "<string>"
}{
"error": {
"code": "<string>",
"details": {},
"message": "<string>",
"param": "<string>",
"retryHint": "never",
"retryable": true,
"type": "<string>"
}
}Update post metadata
curl --request POST \
--url https://api.aisa.one/apis/v1/social/posts/{postId}/update-metadata \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"platform": "youtube"
}
'import requests
url = "https://api.aisa.one/apis/v1/social/posts/{postId}/update-metadata"
payload = { "platform": "youtube" }
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({platform: 'youtube'})
};
fetch('https://api.aisa.one/apis/v1/social/posts/{postId}/update-metadata', 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.aisa.one/apis/v1/social/posts/{postId}/update-metadata",
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([
'platform' => 'youtube'
]),
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.aisa.one/apis/v1/social/posts/{postId}/update-metadata"
payload := strings.NewReader("{\n \"platform\": \"youtube\"\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.aisa.one/apis/v1/social/posts/{postId}/update-metadata")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"platform\": \"youtube\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/social/posts/{postId}/update-metadata")
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 \"platform\": \"youtube\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"success": true,
"updatedFields": [
"<string>"
],
"videoId": "<string>"
}{
"error": {
"code": "<string>",
"details": {},
"message": "<string>",
"param": "<string>",
"retryHint": "never",
"retryable": true,
"type": "<string>"
}
}请求规范
- 方法与路径: POST /apis/v1/social/posts/{postId}/update-metadata
- 可用状态: enabled
- 请求 URL 模板:
https://api.aisa.one/apis/v1/social/posts/{postId}/update-metadata - postId: path; 必填
- Runtime 事实版本: 99acb5bddbedc8d3352e7c4fef86c3e6d8852c14772bcd18dbcf415237a642bd
{
"operationId": "post_aisa_social_apis_v1_social_posts_postid_upda_cf80eb",
"method": "POST",
"path": "/apis/v1/social/posts/{postId}/update-metadata",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [
{
"description": "AIsa post ID, or \"_\" when using direct video ID mode",
"in": "path",
"name": "postId",
"required": true,
"schema": {
"type": "string"
}
}
],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"example": {
"description": "New SEO-optimized description",
"platform": "youtube",
"tags": [
"seo",
"marketing",
"tutorial"
],
"title": "Updated Video Title"
},
"schema": {
"properties": {
"accountId": {
"description": "One of your social accounts (acc_...).",
"pattern": "^acc_[0-9A-Za-z]{22}$",
"type": "string"
},
"categoryId": {
"description": "YouTube video category ID",
"type": "string"
},
"containsSyntheticMedia": {
"description": "AI-generated content disclosure. Set true if the video contains synthetic content that could be mistaken for real. YouTube may add a label.",
"type": "boolean"
},
"description": {
"description": "New video description",
"type": "string"
},
"madeForKids": {
"description": "COPPA compliance flag. Set true for child-directed content (restricts comments, notifications, ad targeting).",
"type": "boolean"
},
"platform": {
"description": "The platform to update metadata on",
"enum": [
"youtube"
],
"type": "string"
},
"playlistId": {
"description": "YouTube playlist ID to add the video to (e.g. 'PLxxxxxxxxxxxxx'). Use GET /apis/v1/social/accounts/{id}/youtube-playlists to list available playlists. Only playlists owned by the channel are supported.",
"type": "string"
},
"privacyStatus": {
"description": "Video privacy setting",
"enum": [
"public",
"private",
"unlisted"
],
"type": "string"
},
"tags": {
"description": "Array of keyword tags (max 500 characters combined for YouTube)",
"items": {
"maxLength": 100,
"type": "string"
},
"type": "array"
},
"thumbnailUrl": {
"description": "Public URL of a custom thumbnail image (JPEG, PNG, or GIF, max 50 MB, recommended 1280x720). Works on any video you own, including videos not published through AIsa. The channel must be verified (phone verification) to set custom thumbnails.\n\n**Errors:**\n\n- 400 with the reason, no field updated: YouTube refuses the thumbnail (e.g. channel without the custom-thumbnail permission, video not owned by the connected channel), or the image URL cannot be fetched or has an unsupported format or size.\n- 429: YouTube thumbnail rate limit (uploadRateLimitExceeded). Retry later, not immediately, because retries keep the channel over its limit.\n- 500: any other temporary YouTube or network failure; can be retried.",
"format": "uri",
"type": "string"
},
"title": {
"description": "New video title (max 100 characters for YouTube)",
"maxLength": 100,
"type": "string"
},
"videoId": {
"description": "YouTube video ID (required for direct mode, ignored for post-based mode)",
"type": "string"
}
},
"required": [
"platform"
],
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"description": "Included with your connected social accounts: AIsa does not charge per call.",
"kind": "no_customer_charge"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
费用与请求规则
当前未提供请求参考价格;请使用接口支持的报价功能确认费用。 最终费用以账户适用价格及实际结算为准。 公开参考值不是你的账户报价或最终扣费。对于支持 X-AISA-Cost-Mode: quote 的接口,执行前请针对完整请求获取免费报价;执行后通过响应费用元数据和 Usage Logs 核对结算费用。1 USD 等于 1,000,000 个整数 micro-USD。授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
路径参数
AIsa post ID, or "_" when using direct video ID mode
请求体
The platform to update metadata on
youtube One of your social accounts (acc_...).
^acc_[0-9A-Za-z]{22}$YouTube video category ID
AI-generated content disclosure. Set true if the video contains synthetic content that could be mistaken for real. YouTube may add a label.
New video description
COPPA compliance flag. Set true for child-directed content (restricts comments, notifications, ad targeting).
YouTube playlist ID to add the video to (e.g. 'PLxxxxxxxxxxxxx'). Use GET /apis/v1/social/accounts/{id}/youtube-playlists to list available playlists. Only playlists owned by the channel are supported.
Video privacy setting
public, private, unlisted Array of keyword tags (max 500 characters combined for YouTube)
100Public URL of a custom thumbnail image (JPEG, PNG, or GIF, max 50 MB, recommended 1280x720). Works on any video you own, including videos not published through AIsa. The channel must be verified (phone verification) to set custom thumbnails.
Errors:
- 400 with the reason, no field updated: YouTube refuses the thumbnail (e.g. channel without the custom-thumbnail permission, video not owned by the connected channel), or the image URL cannot be fetched or has an unsupported format or size.
- 429: YouTube thumbnail rate limit (uploadRateLimitExceeded). Retry later, not immediately, because retries keep the channel over its limit.
- 500: any other temporary YouTube or network failure; can be retried.
New video title (max 100 characters for YouTube)
100YouTube video ID (required for direct mode, ignored for post-based mode)