curl --request POST 'https://api.voicecheap.ai/v1/actions/publishing_original_create' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"projectId":"project_launch_2026","workId":"5f8423d1-e4c0-4f80-9e3f-eed959389e24","title":"Product launch","description":"Meet the new product.","youtubeChannelIds":["UC1234567890abcdefghijkl"],"youtubePrivacyStatus":"private","includeDynamicSubtitles":false,"requestId":"41321bda-e243-4b6f-96a4-622cd047c991"}'
const input = {
projectId: 'project_launch_2026',
workId: '5f8423d1-e4c0-4f80-9e3f-eed959389e24',
title: 'Product launch',
description: 'Meet the new product.',
youtubeChannelIds: ['UC1234567890abcdefghijkl'],
youtubePrivacyStatus: 'private',
includeDynamicSubtitles: false,
requestId: '41321bda-e243-4b6f-96a4-622cd047c991',
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/publishing_original_create', {
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_original_create",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"projectId": "project_launch_2026", "workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24", "title": "Product launch", "description": "Meet the new product.", "youtubeChannelIds": ["UC1234567890abcdefghijkl"], "youtubePrivacyStatus": "private", "includeDynamicSubtitles": False, "requestId": "41321bda-e243-4b6f-96a4-622cd047c991"},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"status": "running",
"pollAction": "action_request_get",
"pollAfterSeconds": 5
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"projectId": "project_launch_2026",
"originalPublish": {
"id": "7db6b953-7664-4bc2-811a-6aa7aa29038d",
"workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24",
"title": "Product launch",
"description": "Meet the new product.",
"status": "completed",
"useDynamicSubtitles": false,
"createdAt": 1792152000000,
"updatedAt": 1792152060000,
"channels": [
{
"channelId": "UC1234567890abcdefghijkl",
"platform": "youtube",
"status": "completed",
"videoId": "example1234",
"videoUrl": "https://www.youtube.com/watch?v=example1234"
}
]
}
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "publishing_original_create",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "running",
"pollAfterSeconds": 5
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "publishing_original_create",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "completed",
"resultStored": false,
"message": "The action completed. Retrieve its output from the corresponding history or resource action."
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
Publikowanie
Opublikuj oryginalne wideo
Opublikuj lub zaplanuj publikację oryginalnych multimediów projektu na własnych połączonych kanałach YouTube/TikTok, opcjonalnie z dynamicznymi napisami. Ta operacja publikuje treści na zewnątrz; jawnie wybierz ustawienie prywatności, jeśli zamierzasz udostępnić je publicznie.
POST
/
v1
/
actions
/
publishing_original_create
curl --request POST 'https://api.voicecheap.ai/v1/actions/publishing_original_create' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"projectId":"project_launch_2026","workId":"5f8423d1-e4c0-4f80-9e3f-eed959389e24","title":"Product launch","description":"Meet the new product.","youtubeChannelIds":["UC1234567890abcdefghijkl"],"youtubePrivacyStatus":"private","includeDynamicSubtitles":false,"requestId":"41321bda-e243-4b6f-96a4-622cd047c991"}'
const input = {
projectId: 'project_launch_2026',
workId: '5f8423d1-e4c0-4f80-9e3f-eed959389e24',
title: 'Product launch',
description: 'Meet the new product.',
youtubeChannelIds: ['UC1234567890abcdefghijkl'],
youtubePrivacyStatus: 'private',
includeDynamicSubtitles: false,
requestId: '41321bda-e243-4b6f-96a4-622cd047c991',
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/publishing_original_create', {
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_original_create",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"projectId": "project_launch_2026", "workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24", "title": "Product launch", "description": "Meet the new product.", "youtubeChannelIds": ["UC1234567890abcdefghijkl"], "youtubePrivacyStatus": "private", "includeDynamicSubtitles": False, "requestId": "41321bda-e243-4b6f-96a4-622cd047c991"},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"status": "running",
"pollAction": "action_request_get",
"pollAfterSeconds": 5
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"projectId": "project_launch_2026",
"originalPublish": {
"id": "7db6b953-7664-4bc2-811a-6aa7aa29038d",
"workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24",
"title": "Product launch",
"description": "Meet the new product.",
"status": "completed",
"useDynamicSubtitles": false,
"createdAt": 1792152000000,
"updatedAt": 1792152060000,
"channels": [
{
"channelId": "UC1234567890abcdefghijkl",
"platform": "youtube",
"status": "completed",
"videoId": "example1234",
"videoUrl": "https://www.youtube.com/watch?v=example1234"
}
]
}
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "publishing_original_create",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "running",
"pollAfterSeconds": 5
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "publishing_original_create",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "completed",
"resultStored": false,
"message": "The action completed. Retrieve its output from the corresponding history or resource action."
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
Opublikuj lub zaplanuj publikację oryginalnych multimediów projektu na własnych połączonych kanałach YouTube/TikTok, opcjonalnie z dynamicznymi napisami. Ta operacja publikuje treści na zewnątrz; jawnie wybierz ustawienie prywatności, jeśli zamierzasz udostępnić je publicznie.
Wymagane uprawnienia:
POST https://api.voicecheap.ai/v1/actions/publishing_original_create
Uwierzytelnianie i uprawnienia
string
wymagane
Wyślij klucz API VoiceCheap w tym nagłówku. Obsługiwany jest również nagłówek Authorization: Bearer z tym samym kluczem API. Tokeny dostępu OAuth są
akceptowane tylko przez MCP, a nie przez ten endpoint REST.
publishing:write, projects:read.
Wymagana jest aktywna płatna subskrypcja. Uprawnienia nie zmieniają ról w zespole, własności zasobów, kredytów na multimedia ani limitów planu.
Parametry
string
wymagane
Wartość tekstowa.Minimalna długość: 1. Maksymalna długość: 200. Wzorzec:
^[^/\\]+$.string
wymagane
Wartość tekstowa.Minimalna długość: 1. Maksymalna długość: 200. Wzorzec:
^[^/\\]+$.string
wymagane
Wartość tekstowa.Minimalna długość: 1. Maksymalna długość: 100.
string
Wartość tekstowa.Maksymalna długość: 5000.
array
Lista wartości. Strukturę elementów opisuje pełny schemat danych wejściowych.Maksymalna liczba elementów: 20.
array
Lista wartości. Strukturę elementów opisuje pełny schemat danych wejściowych.Maksymalna liczba elementów: 20.
string
Wartość tekstowa.Dozwolone wartości: “public”, “unlisted”, “private”. Wartość domyślna: “private”.
string
Wartość tekstowa.Dozwolone wartości: “PUBLIC_TO_EVERYONE”, “MUTUAL_FOLLOW_FRIENDS”, “FOLLOWER_OF_CREATOR”, “SELF_ONLY”. Wartość domyślna: “SELF_ONLY”.
boolean
Wartość logiczna.Wartość domyślna: false.
string
Wartość tekstowa.Format: “date-time”. Wzorzec:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$.string
Opcjonalne na poziomie transportu: jeśli identyfikator zostanie pominięty, serwer doda go przed walidacją. Podaj własny, stały UUID v4, aby bezpiecznie odzyskać wynik po utracie odpowiedzi.Format: “uuid”. Wzorzec:
^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$.Pełny schemat danych wejściowych
Pełny schemat danych wejściowych
Poniższy JSON Schema zachowuje dokładne nazwy pól, typy zagnieżdżone, wartości domyślne, ograniczenia i akceptowane wartości udostępniane przez mechanizm wykrywania. Dodatkowe reguły zależności między polami znajdują się w uwagach do operacji.
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[^/\\\\]+$"
},
"workId": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[^/\\\\]+$"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": {
"type": "string",
"maxLength": 5000
},
"youtubeChannelIds": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[^/\\\\]+$"
}
},
"tiktokChannelIds": {
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[^/\\\\]+$"
}
},
"youtubePrivacyStatus": {
"default": "private",
"type": "string",
"enum": ["public", "unlisted", "private"]
},
"tiktokPrivacyLevel": {
"default": "SELF_ONLY",
"type": "string",
"enum": ["PUBLIC_TO_EVERYONE", "MUTUAL_FOLLOW_FRIENDS", "FOLLOWER_OF_CREATOR", "SELF_ONLY"]
},
"includeDynamicSubtitles": {
"default": false,
"type": "boolean"
},
"scheduledAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"requestId": {
"type": "string",
"format": "uuid",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "UUID v4 for this action. Reuse the same ID with identical arguments on retries."
}
},
"required": ["projectId", "workId", "title"],
"additionalProperties": false
}
Idempotencja
Dla każdej operacji zmieniającej dane użyj UUID v4 w requestId lub w nagłówku HTTP Idempotency-Key. Po awarii sieci użyj ponownie tego samego identyfikatora i identycznych argumentów. Jeśli podasz oba, muszą być zgodne. Ponowienie zapisanego żądania nie powtarza operacji ani nie zużywa kolejnego wywołania z miesięcznego limitu. Żądania zakończone błędem lub przerwane nie są automatycznie uruchamiane ponownie. Każda operacja zmieniająca dane może zwrócić HTTP 202, gdy ponowienie napotka to samo żądanie nadal w stanie running, nawet jeśli jej pierwsze wykonanie zwykle jest synchroniczne. Jeśli wykonanie się zakończyło, ale resultStored ma wartość false, ponowienie zwraca HTTP 200 z zapisanym stanem żądania zamiast pierwotnego wyniku. Pobierz wynik za pomocą akcji historii, wyniku lub pobierania właściwej dla danej domeny.Przykłady żądań
Zastąp przykładowe identyfikatory zasobów i klucze multimediów wartościami zwróconymi dla Twojego konta. Przy ponawianiu tej samej operacji zmieniającej dane zachowaj identyfikator żądania.curl --request POST 'https://api.voicecheap.ai/v1/actions/publishing_original_create' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"projectId":"project_launch_2026","workId":"5f8423d1-e4c0-4f80-9e3f-eed959389e24","title":"Product launch","description":"Meet the new product.","youtubeChannelIds":["UC1234567890abcdefghijkl"],"youtubePrivacyStatus":"private","includeDynamicSubtitles":false,"requestId":"41321bda-e243-4b6f-96a4-622cd047c991"}'
const input = {
projectId: 'project_launch_2026',
workId: '5f8423d1-e4c0-4f80-9e3f-eed959389e24',
title: 'Product launch',
description: 'Meet the new product.',
youtubeChannelIds: ['UC1234567890abcdefghijkl'],
youtubePrivacyStatus: 'private',
includeDynamicSubtitles: false,
requestId: '41321bda-e243-4b6f-96a4-622cd047c991',
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/publishing_original_create', {
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_original_create",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"projectId": "project_launch_2026", "workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24", "title": "Product launch", "description": "Meet the new product.", "youtubeChannelIds": ["UC1234567890abcdefghijkl"], "youtubePrivacyStatus": "private", "includeDynamicSubtitles": False, "requestId": "41321bda-e243-4b6f-96a4-622cd047c991"},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
Odpowiedź
Ta operacja zwraca HTTP 202 podczas przetwarzania. Zapisz requestId i odpytuj action_request_get, podając ten identyfikator oraz nazwę pierwotnej operacji. Stany odpytywania to running, completed, failed i interrupted. Zakończony wynik może wskazywać osobne zadanie przetwarzania multimediów; kontynuuj za pomocą akcji stanu lub wyniku właściwej dla tej operacji. Zwraca odświeżony publiczny stan publikacji oryginału po zażądaniu publikacji lub zaplanowaniu jej na wybranych kanałach.{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"status": "running",
"pollAction": "action_request_get",
"pollAfterSeconds": 5
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"projectId": "project_launch_2026",
"originalPublish": {
"id": "7db6b953-7664-4bc2-811a-6aa7aa29038d",
"workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24",
"title": "Product launch",
"description": "Meet the new product.",
"status": "completed",
"useDynamicSubtitles": false,
"createdAt": 1792152000000,
"updatedAt": 1792152060000,
"channels": [
{
"channelId": "UC1234567890abcdefghijkl",
"platform": "youtube",
"status": "completed",
"videoId": "example1234",
"videoUrl": "https://www.youtube.com/watch?v=example1234"
}
]
}
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "publishing_original_create",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "running",
"pollAfterSeconds": 5
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "publishing_original_create",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"status": "completed",
"resultStored": false,
"message": "The action completed. Retrieve its output from the corresponding history or resource action."
},
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991"
}
Pola wyniku
| Pole | Opis |
|---|---|
data.projectId | Identyfikator projektu nadrzędnego. |
data.originalPublish | Odświeżony publiczny stan publikacji oryginału lub null. |
data.originalPublish.id | Identyfikator próby publikacji oryginału. |
data.originalPublish.workId | Opcjonalny identyfikator wersji językowej używany przez pierwotny proces publikacji. |
data.originalPublish.title | Tytuł publikacji. |
data.originalPublish.description | Opcjonalny opis. |
data.originalPublish.status | idle, scheduled, in-progress, completed lub failed. |
data.originalPublish.useDynamicSubtitles | Określa, czy pierwotny proces publikacji żądał dynamicznych napisów. |
data.originalPublish.dynamicSubtitlesVideoUrl | Opcjonalny adres URL wygenerowanego filmu z napisami. |
data.originalPublish.scheduledAt | Opcjonalny zaplanowany czas w milisekundach Unix. |
data.originalPublish.createdAt | Czas utworzenia w milisekundach Unix. |
data.originalPublish.updatedAt | Czas najnowszej aktualizacji w milisekundach Unix. |
data.originalPublish.channels | Stan poszczególnych kanałów z channelId, platform, status oraz opcjonalnymi videoId, videoUrl, scheduledAt. |
Odzyskaj żądanie i sprawdź jego stan
Używaj tego samego identyfikatora także po utracie połączenia. Jeśli resultStored ma wartość false, pobierz wynik za pomocą odpowiedniej akcji historii, wyniku lub pobierania. Nigdy nie uruchamiaj drugiego generowania tylko po to, aby sprawdzić postęp.curl --request POST 'https://api.voicecheap.ai/v1/actions/action_request_get' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"requestId":"41321bda-e243-4b6f-96a4-622cd047c991","operation":"publishing_original_create"}'
HTTP 200
{
"data": {
"requestId": "41321bda-e243-4b6f-96a4-622cd047c991",
"operation": "publishing_original_create",
"status": "completed",
"createdAt": 1792144800000,
"updatedAt": 1792144820000,
"resultStored": true,
"result": {
"projectId": "project_launch_2026",
"originalPublish": {
"id": "7db6b953-7664-4bc2-811a-6aa7aa29038d",
"workId": "5f8423d1-e4c0-4f80-9e3f-eed959389e24",
"title": "Product launch",
"description": "Meet the new product.",
"status": "completed",
"useDynamicSubtitles": false,
"createdAt": 1792152000000,
"updatedAt": 1792152060000,
"channels": [
{
"channelId": "UC1234567890abcdefghijkl",
"platform": "youtube",
"status": "completed",
"videoId": "example1234",
"videoUrl": "https://www.youtube.com/watch?v=example1234"
}
]
}
}
}
}
Uwagi do operacji
- Ta akcja publikuje na zewnętrznych platformach i wymaga własności projektu. Co najmniej jedna z tablic youtubeChannelIds lub tiktokChannelIds musi zawierać kanał połączony z uwierzytelnionym użytkownikiem; każda tablica dopuszcza maksymalnie 20 wpisów.
- workId musi należeć do tego projektu, mimo że wybrane multimedia to oryginalne wideo.
- Integracja domyślnie ustawia youtubePrivacyStatus na private i tiktokPrivacyLevel na SELF_ONLY. Jawnie ustaw żądany poziom prywatności, jeśli zamierzasz zapewnić szerszy dostęp.
- includeDynamicSubtitles ma domyślnie wartość false, a po włączeniu wymaga subtitles:write. Korzysta ze standardowych limitów napisów i kredytów na multimedia.
- scheduledAt to opcjonalna data i godzina ISO z przesunięciem strefy czasowej. Tylko czas ściśle w przyszłości planuje przepływ publikacji oryginału; prawidłowy znacznik czasu z przeszłości go nie planuje i może spowodować natychmiastową publikację.
- To długotrwała akcja. Sprawdzaj stan przez action_request_get, aby potwierdzić zakończenie procedury obsługi, a następnie przez publishing_list, aby sprawdzić postęp publikacji zasobu lub zaplanowane wyniki.
- originalPublish może mieć wartość null, gdy stan nie jest dostępny, lub wskazywać stan in-progress, scheduled, completed albo failed. Wyniki poszczególnych kanałów znajdują się w channels, więc zwrócenie wyniku nie gwarantuje pomyślnej publikacji na każdym kanale.
Wykorzystanie
Każde pomyślne wywołanie zużywa jedno wywołanie z miesięcznego limitu API/MCP. Obowiązują również kredyty na multimedia oraz limity generowania danej operacji.Błędy
| Status HTTP | Kod | Znaczenie lub sposób rozwiązania |
|---|---|---|
| 400 | BAD_REQUEST | Oryginalne multimedia są niedostępne, trwa już inna publikacja oryginału lub dane wejściowe publikacji są nieprawidłowe. |
| 400 | CREDENTIAL_IN_QUERY | Dane uwierzytelniające zostały podane w parametrze zapytania access_token lub api_key. Wysyłaj dane uwierzytelniające w nagłówkach. |
| 400 | IDEMPOTENCY_CONFLICT | Nagłówek Idempotency-Key i pole requestId w treści żądania muszą być zgodne. |
| 400 | INVALID_REQUEST_ID | Podaj requestId lub Idempotency-Key w formacie UUID v4. |
| 400 | VALIDATION_ERROR | Popraw dane wejściowe zgodnie ze schematem. Nieprawidłowe lub niespójne wartości są odrzucane przed wykonaniem. |
| 401 | API_KEY_EXPIRED | Klucz API wygasł. |
| 401 | INVALID_API_KEY | Podaj prawidłowy, niewygasły klucz API. |
| 401 | INVALID_CREDENTIAL | Nagłówek Authorization ma nieprawidłowy format lub jest sprzeczny z x-api-key. |
| 401 | MISSING_CREDENTIAL | Nie podano użytecznych danych uwierzytelniających w nagłówku lub przekroczyły one 4096 znaków. |
| 401 | USER_NOT_FOUND | Konto powiązane z poświadczeniem już nie istnieje. |
| 403 | ACCOUNT_UNAVAILABLE | Konto wykonujące operację lub konto rozliczeniowe jest niedostępne albo jest w trakcie usuwania. |
| 403 | AMBIGUOUS_TEAM_API_KEY | Użytkownik, do którego należą dane uwierzytelniające, należy do więcej niż jednego zespołu, więc kontekst rozliczeniowy jest niejednoznaczny. |
| 403 | FORBIDDEN | Uwierzytelniony podmiot wykonujący akcję nie ma dostępu do tego projektu. |
| 403 | INSUFFICIENT_SCOPE | includeDynamicSubtitles o wartości true wymaga dodatkowo subtitles:write. |
| 403 | INTEGRATION_PLAN_UNSUPPORTED | Nie udało się zweryfikować limitów integracji konta. |
| 403 | OWNER_REQUIRED | Tylko właściciel projektu może publikować oryginalne multimedia projektu. |
| 403 | PUBLISHING_CHANNEL_FORBIDDEN | Każdy wybrany kanał musi należeć do uwierzytelnionego użytkownika wykonującego żądanie. |
| 403 | SUBSCRIPTION_REQUIRED | Użyj aktywnej płatnej subskrypcji. |
| 403 | TEAM_OWNER_NOT_FOUND | Nie znaleziono konta faktycznego właściciela zespołu. |
| 404 | PROJECT_NOT_FOUND | Projekt nie istnieje na dostępnym koncie. |
| 404 | TRANSLATION_NOT_FOUND | workId nie wskazuje wersji językowej należącej do tego projektu. |
| 409 | CONCURRENT_ACTION_LIMIT_REACHED | Na tym koncie działa już 10 akcji integracji. Sprawdzaj stan istniejącego żądania przed rozpoczęciem kolejnego. |
| 409 | IDEMPOTENCY_CONFLICT | Używaj ponownie identyfikatora wyłącznie z tą samą operacją i tymi samymi argumentami. |
| 429 | INTEGRATION_MONTHLY_LIMIT_REACHED | Poczekaj na odnowienie miesięcznego limitu lub zmień plan. |
| 429 | INTEGRATION_RATE_LIMIT_REACHED | Jeśli występuje nagłówek Retry-After, odczekaj wskazany czas i stosuj rosnące odstępy między ponowieniami. |
| 500 | INTERNAL_ERROR | Sprawdź stan zapisanego żądania i historię zasobu przed podjęciem decyzji o ponowieniu operacji zmieniającej dane. |
| 503 | ACTION_RESULT_UNAVAILABLE | Akcja została wykonana, ale nie udało się zapisać jej wyniku. Sprawdź zapisany stan żądania i historię zasobu przed rozpoczęciem nowego generowania. |
| 503 | SERVER_RESTARTING | Serwer jest uruchamiany ponownie. Spróbuj ponownie wkrótce i zachowaj ten sam identyfikator żądania dla operacji zmieniającej dane. |
{
"code": "INSUFFICIENT_SCOPE",
"message": "This credential does not permit the requested action.",
"status": 403,
"details": {
"requiredScopes": ["publishing:write", "projects:read"]
}
}
Czy ta strona była pomocna?

