curl --request POST 'https://api.voicecheap.ai/v1/actions/publishing_channels_list' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
const input = {};
const response = await fetch('https://api.voicecheap.ai/v1/actions/publishing_channels_list', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/publishing_channels_list",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"channels": [
{
"platform": "youtube",
"channelId": "UC1234567890abcdefghijkl",
"name": "Product updates",
"profilePicture": "https://media.example.com/channels/profile.jpg",
"associatedLanguage": "english",
"isMainChannel": true
},
{
"platform": "tiktok",
"channelId": "tiktok_product_updates",
"name": "Product updates",
"associatedLanguage": "english",
"isMainChannel": false,
"canPost": true,
"privacyLevelOptions": [
"SELF_ONLY",
"PUBLIC_TO_EVERYONE"
]
}
]
}
}
Publicação
Listar canais de publicação conectados
Liste as identidades dos seus próprios canais YouTube e TikTok conectados. Tokens de autenticação nunca são retornados.
POST
/
v1
/
actions
/
publishing_channels_list
curl --request POST 'https://api.voicecheap.ai/v1/actions/publishing_channels_list' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
const input = {};
const response = await fetch('https://api.voicecheap.ai/v1/actions/publishing_channels_list', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/publishing_channels_list",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"channels": [
{
"platform": "youtube",
"channelId": "UC1234567890abcdefghijkl",
"name": "Product updates",
"profilePicture": "https://media.example.com/channels/profile.jpg",
"associatedLanguage": "english",
"isMainChannel": true
},
{
"platform": "tiktok",
"channelId": "tiktok_product_updates",
"name": "Product updates",
"associatedLanguage": "english",
"isMainChannel": false,
"canPost": true,
"privacyLevelOptions": [
"SELF_ONLY",
"PUBLIC_TO_EVERYONE"
]
}
]
}
}
Liste as identidades dos seus próprios canais YouTube e TikTok conectados. Tokens de autenticação nunca são retornados.
Permissões necessárias:
POST https://api.voicecheap.ai/v1/actions/publishing_channels_list
Autenticação e permissões
string
obrigatório
Envie uma chave de API VoiceCheap neste cabeçalho. Authorization: Bearer com a mesma chave de API também é aceito. Tokens de acesso OAuth são
aceitos apenas pelo MCP, não por este endpoint REST.
publishing:read.
É necessária uma assinatura paga ativa. As permissões não alteram funções na equipe, propriedade dos recursos, créditos de mídia ou limites do plano.
Parâmetros
Envie um objeto JSON vazio. Esta ação não possui campos de entrada.Esquema de entrada completo
Esquema de entrada completo
O JSON Schema abaixo preserva os nomes exatos dos campos, tipos aninhados, valores padrão, limites e valores aceitos expostos pela descoberta. Regras adicionais entre campos são listadas nas notas da operação.
{
"type": "object",
"properties": {},
"additionalProperties": false
}
Exemplos de requisição
Substitua os identificadores de recursos e as chaves de mídia dos exemplos pelos valores retornados para sua conta. Mantenha o identificador da requisição ao tentar novamente a mesma alteração.curl --request POST 'https://api.voicecheap.ai/v1/actions/publishing_channels_list' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{}'
const input = {};
const response = await fetch('https://api.voicecheap.ai/v1/actions/publishing_channels_list', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/publishing_channels_list",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
Resposta
Uma primeira execução bem-sucedida retorna HTTP 200 com o resultado da operação em data. Uma repetição pode retornar o estado salvo da requisição. O exemplo mostra uma resposta aceita, não todos os campos opcionais. Retorna as identidades públicas dos canais do YouTube e TikTok conectados do autor autenticado da ação.{
"data": {
"channels": [
{
"platform": "youtube",
"channelId": "UC1234567890abcdefghijkl",
"name": "Product updates",
"profilePicture": "https://media.example.com/channels/profile.jpg",
"associatedLanguage": "english",
"isMainChannel": true
},
{
"platform": "tiktok",
"channelId": "tiktok_product_updates",
"name": "Product updates",
"associatedLanguage": "english",
"isMainChannel": false,
"canPost": true,
"privacyLevelOptions": [
"SELF_ONLY",
"PUBLIC_TO_EVERYONE"
]
}
]
}
}
Campos do resultado
| Campo | Descrição |
|---|---|
data.channels | Identidades dos canais conectados nas duas plataformas. |
data.channels[].platform | youtube ou tiktok. |
data.channels[].channelId | Use nos arrays de canais de publishing_original_create ou em publishing_translation_create.channelId. |
data.channels[].name | Nome de exibição do canal conectado. |
data.channels[].profilePicture | URL opcional da imagem de perfil. |
data.channels[].associatedLanguage | Idioma opcional do canal. |
data.channels[].isMainChannel | Indicador opcional de canal principal. |
data.channels[].canPost | Capacidade opcional de publicação no TikTok. |
data.channels[].privacyLevelOptions | Níveis opcionais de privacidade do TikTok compatíveis com a conta conectada. |
Notas da operação
- Lista os canais do próprio usuário executor, mesmo quando o faturamento do projeto pertence ao proprietário da equipe. Não retorna tokens de acesso nem de atualização dos canais.
- Ambas as plataformas expõem platform, channelId, name e os opcionais profilePicture, associatedLanguage e isMainChannel. O TikTok também pode expor canPost e privacyLevelOptions.
- A ação lista apenas conexões existentes; ela não conecta uma nova conta de rede social.
Uso
Cada chamada bem-sucedida consome uma chamada mensal da API/MCP. Os créditos de mídia e as cotas de geração da própria operação também se aplicam.Erros
| Status HTTP | Código | Significado ou recuperação |
|---|---|---|
| 400 | CREDENTIAL_IN_QUERY | Foram fornecidas credenciais em um parâmetro de consulta access_token ou api_key. Envie as credenciais nos cabeçalhos. |
| 400 | VALIDATION_ERROR | Corrija a entrada usando o esquema. Valores inválidos ou inconsistentes são rejeitados antes da execução. |
| 401 | API_KEY_EXPIRED | A chave de API expirou. |
| 401 | INVALID_API_KEY | Forneça uma chave de API válida e dentro do prazo de validade. |
| 401 | INVALID_CREDENTIAL | O cabeçalho Authorization está malformado ou entra em conflito com x-api-key. |
| 401 | MISSING_CREDENTIAL | Nenhuma credencial utilizável foi fornecida no cabeçalho, ou ela excedeu 4096 caracteres. |
| 401 | USER_NOT_FOUND | A conta da credencial não existe mais. |
| 403 | AMBIGUOUS_TEAM_API_KEY | O usuário da credencial pertence a mais de uma equipe, portanto o contexto de cobrança é ambíguo. |
| 403 | INSUFFICIENT_SCOPE | Conceda todas as permissões necessárias ou escolha outra credencial. |
| 403 | INTEGRATION_PLAN_UNSUPPORTED | Não foi possível verificar os limites de integração da conta. |
| 403 | SUBSCRIPTION_REQUIRED | Use uma assinatura paga ativa. |
| 403 | TEAM_OWNER_NOT_FOUND | Não foi possível encontrar a conta efetiva do proprietário da equipe. |
| 429 | INTEGRATION_MONTHLY_LIMIT_REACHED | Aguarde a renovação do limite mensal ou mude de plano. |
| 429 | INTEGRATION_RATE_LIMIT_REACHED | Aguarde o prazo de Retry-After, quando presente, e aumente progressivamente o intervalo entre as tentativas. |
| 500 | INTERNAL_ERROR | Verifique o estado da requisição salva e o histórico do recurso antes de decidir repetir uma alteração. |
| 503 | SERVER_RESTARTING | O servidor está reiniciando. Tente novamente em breve e mantenha o mesmo identificador de requisição para uma alteração. |
{
"code": "INSUFFICIENT_SCOPE",
"message": "This credential does not permit the requested action.",
"status": 403,
"details": {
"requiredScopes": ["publishing:read"]
}
}
Esta página foi útil?

