Set comment moderation status
curl --request POST \
--url https://api.aisa.one/apis/v1/social/inbox/comments/{postId}/{commentId}/moderation \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3",
"moderationStatus": "rejected",
"platform": "youtube"
}
'import requests
url = "https://api.aisa.one/apis/v1/social/inbox/comments/{postId}/{commentId}/moderation"
payload = {
"accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3",
"moderationStatus": "rejected",
"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({
accountId: 'acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3',
moderationStatus: 'rejected',
platform: 'youtube'
})
};
fetch('https://api.aisa.one/apis/v1/social/inbox/comments/{postId}/{commentId}/moderation', 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/inbox/comments/{postId}/{commentId}/moderation",
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([
'accountId' => 'acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3',
'moderationStatus' => 'rejected',
'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/inbox/comments/{postId}/{commentId}/moderation"
payload := strings.NewReader("{\n \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\",\n \"moderationStatus\": \"rejected\",\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/inbox/comments/{postId}/{commentId}/moderation")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\",\n \"moderationStatus\": \"rejected\",\n \"platform\": \"youtube\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/social/inbox/comments/{postId}/{commentId}/moderation")
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 \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\",\n \"moderationStatus\": \"rejected\",\n \"platform\": \"youtube\"\n}"
response = http.request(request)
puts response.read_body{
"success": true
}{
"error": {
"code": "<string>",
"details": {},
"message": "<string>",
"param": "<string>",
"retryHint": "never",
"retryable": true,
"type": "<string>"
}
}AIsa Social
Set comment moderation status
Comments. Acts in public on your connected account; needs social:publish. Audited. Ids are yours: accounts acc_..., profiles prf_..., posts pst_...; every other object id is checked against your accounts before the call.
Set a comment's moderation status. Supported on YouTube only.
Use this to work a moderation queue: approve a held comment (`published`), reject it
(`rejected`), or send it back for review (`heldForReview`).
The request must be authorized by the owner of the channel or video the comment
belongs to. You cannot moderate comments on videos you do not own.
This is distinct from `POST /apis/v1/social/inbox/comments/{postId}/{commentId}/hide`, which
covers Facebook, Instagram, Threads, and X and does not apply to YouTube.
<!-- aisa-pricing:start -->
A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.
<!-- aisa-pricing:end -->
POST
https://api.aisa.one
/
apis
/
v1
/
social
/
inbox
/
comments
/
{postId}
/
{commentId}
/
moderation
Set comment moderation status
curl --request POST \
--url https://api.aisa.one/apis/v1/social/inbox/comments/{postId}/{commentId}/moderation \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3",
"moderationStatus": "rejected",
"platform": "youtube"
}
'import requests
url = "https://api.aisa.one/apis/v1/social/inbox/comments/{postId}/{commentId}/moderation"
payload = {
"accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3",
"moderationStatus": "rejected",
"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({
accountId: 'acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3',
moderationStatus: 'rejected',
platform: 'youtube'
})
};
fetch('https://api.aisa.one/apis/v1/social/inbox/comments/{postId}/{commentId}/moderation', 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/inbox/comments/{postId}/{commentId}/moderation",
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([
'accountId' => 'acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3',
'moderationStatus' => 'rejected',
'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/inbox/comments/{postId}/{commentId}/moderation"
payload := strings.NewReader("{\n \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\",\n \"moderationStatus\": \"rejected\",\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/inbox/comments/{postId}/{commentId}/moderation")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\",\n \"moderationStatus\": \"rejected\",\n \"platform\": \"youtube\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/social/inbox/comments/{postId}/{commentId}/moderation")
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 \"accountId\": \"acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3\",\n \"moderationStatus\": \"rejected\",\n \"platform\": \"youtube\"\n}"
response = http.request(request)
puts response.read_body{
"success": true
}{
"error": {
"code": "<string>",
"details": {},
"message": "<string>",
"param": "<string>",
"retryHint": "never",
"retryable": true,
"type": "<string>"
}
}Request contract
- Method and path: POST /apis/v1/social/inbox/comments/{postId}/{commentId}/moderation
- Availability: enabled
- Request URL template:
https://api.aisa.one/apis/v1/social/inbox/comments/{postId}/{commentId}/moderation - postId: path; required
- commentId: path; required
- Runtime facts: 99acb5bddbedc8d3352e7c4fef86c3e6d8852c14772bcd18dbcf415237a642bd
{
"operationId": "post_aisa_social_apis_v1_social_inbox_comments_po_671930",
"method": "POST",
"path": "/apis/v1/social/inbox/comments/{postId}/{commentId}/moderation",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [
{
"in": "path",
"name": "postId",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "commentId",
"required": true,
"schema": {
"type": "string"
}
}
],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"example": {
"accountId": "acc_7Hq2Lm9Xc4Rt8Vw1Nb6Ks3",
"banAuthor": true,
"moderationStatus": "rejected",
"platform": "youtube"
},
"schema": {
"properties": {
"accountId": {
"description": "One of your social accounts (acc_...).",
"pattern": "^acc_[0-9A-Za-z]{22}$",
"type": "string"
},
"banAuthor": {
"description": "Also ban the comment's author, auto-rejecting their future comments. Only valid when moderationStatus is \"rejected\"; any other pairing is a 400.",
"type": "boolean"
},
"moderationStatus": {
"description": "published approves the comment, rejected removes it, heldForReview returns it to the queue.",
"enum": [
"published",
"rejected",
"heldForReview"
],
"type": "string"
},
"platform": {
"description": "Only YouTube supports comment moderation",
"enum": [
"youtube"
],
"type": "string"
}
},
"required": [
"accountId",
"moderationStatus",
"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"
}
}
}
}
Cost and request rules
A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
One of your social accounts (acc_...).
Pattern:
^acc_[0-9A-Za-z]{22}$published approves the comment, rejected removes it, heldForReview returns it to the queue.
Available options:
published, rejected, heldForReview Only YouTube supports comment moderation
Available options:
youtube Also ban the comment's author, auto-rejecting their future comments. Only valid when moderationStatus is "rejected"; any other pairing is a 400.
Response
Moderation status applied