> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.voicecheap.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Odczytaj zapisany wynik akcji napisów

> Odczytaj metadane zapisanego wyniku. Ustaw includeContent=true, aby pobrać pełny uporządkowany JSON, w tym wszystkie słowa napisów lub tekst transkrypcji.

Odczytaj metadane zapisanego wyniku. Ustaw includeContent=true, aby pobrać pełny uporządkowany JSON, w tym wszystkie słowa napisów lub tekst transkrypcji.

```http theme={null}
POST https://api.voicecheap.ai/v1/actions/subtitles_result_get
```

## Uwierzytelnianie i uprawnienia

<ParamField header="x-api-key" type="string" required>
  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.
</ParamField>

Wymagane uprawnienia: `subtitles: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

<ParamField body="resultId" type="string" required>
  Wartość tekstowa.

  Format: "uuid". Wzorzec: `^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$`.
</ParamField>

<ParamField body="includeContent" type="boolean">
  Wartość logiczna.

  Wartość domyślna: false.
</ParamField>

<Accordion title="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.

  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "resultId": {
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      },
      "includeContent": {
        "default": false,
        "type": "boolean"
      }
    },
    "required": ["resultId"],
    "additionalProperties": false
  }
  ```
</Accordion>

## 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.

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST 'https://api.voicecheap.ai/v1/actions/subtitles_result_get' \
    --header "x-api-key: $VOICECHEAP_API_KEY" \
    --header 'Content-Type: application/json' \
    --data '{"resultId":"b3caf96f-5f2a-4619-832c-a12c0d57f78b","includeContent":true}'
  ```

  ```javascript JavaScript theme={null}
  const input = {
    resultId: 'b3caf96f-5f2a-4619-832c-a12c0d57f78b',
    includeContent: true,
  };
  const response = await fetch('https://api.voicecheap.ai/v1/actions/subtitles_result_get', {
    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);
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.post(
      "https://api.voicecheap.ai/v1/actions/subtitles_result_get",
      headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
      json={"resultId": "b3caf96f-5f2a-4619-832c-a12c0d57f78b", "includeContent": True},
      timeout=120,
  )
  body = response.json()
  if not response.ok:
      raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
  print(body)
  ```
</RequestExample>

## Odpowiedź

Pierwsze pomyślne wykonanie zwraca HTTP 200 z wynikiem operacji w data. Ponowienie może zamiast tego zwrócić zapisany stan żądania. Przykład przedstawia jedną obsługiwaną odpowiedź, bez wszystkich opcjonalnych pól.

Metadane zapisanego wyniku oraz pełny ustrukturyzowany wynik, gdy includeContent ma wartość true. Pominięcie includeContent zwraca wyłącznie metadane.

<ResponseExample>
  ```json HTTP 200 theme={null}
  {
    "data": {
      "resultId": "b3caf96f-5f2a-4619-832c-a12c0d57f78b",
      "operation": "captions_transcribe",
      "createdAt": 1792152000000,
      "fileName": "voicecheap-captions_transcribe-b3caf96f-5f2a-4619-832c-a12c0d57f78b.json",
      "byteLength": 190,
      "contentType": "application/json; charset=utf-8",
      "status": "completed",
      "requestId": "13579bdf-2468-4ace-8bdf-0123456789ab",
      "getAction": "subtitles_result_get",
      "downloadAction": "subtitles_result_download",
      "listAction": "subtitles_result_list",
      "result": {
        "words": [
          {
            "text": "Hello",
            "startMs": 0,
            "endMs": 500,
            "speakerId": "speaker_0"
          },
          {
            "text": "world.",
            "startMs": 500,
            "endMs": 1500,
            "speakerId": "speaker_0"
          }
        ],
        "detectedLanguage": "en",
        "durationSeconds": 60
      }
    }
  }
  ```
</ResponseExample>

## Pola wyniku

| Pole | Opis |
| - | - |
| `data.resultId` | UUID należącego do wywołującego zapisanego wyjścia. Użyj go z getAction lub downloadAction; jest odrębny od requestId i każdego historyId. |
| `data.operation` | Akcja generowania, która utworzyła ten zapisany JSON. |
| `data.createdAt` | Znacznik czasu Unix w milisekundach, kiedy przygotowano zapisany wynik. |
| `data.fileName` | Sugerowana nazwa pliku eksportu JSON. |
| `data.byteLength` | Bajty UTF-8 pełnego zserializowanego wyniku, a nie skróconych metadanych. |
| `data.contentType` | application/json; charset=utf-8. |
| `data.status` | completed po pomyślnym generowaniu. Historia wyników może również udostępniać wpisy odzyskiwania w stanie pending. |
| `data.requestId` | UUID oryginalnego żądania akcji, jeśli został zapisany. |
| `data.getAction` | Akcja pobierania własnego wyniku; includeContent ma domyślnie wartość false i musi mieć wartość true, aby uzyskać pełny ustrukturyzowany wynik. |
| `data.downloadAction` | Uwierzytelniona akcja eksportu zwracająca pełny JSON w postaci ciągu znaków. |
| `data.listAction` | Akcja wyświetlania należących do użytkownika zapisanych wyników dla tej domeny uprawnień. |
| `data.result` | Pełna oryginalna publiczna treść generowania; obecna tylko przy includeContent: true. |

## Uwagi do operacji

* Wymaga płatnej subskrypcji i uprawnienia do akcji. Osobisty plan narzędzi użytkownika wykonującego żądanie jest ponownie sprawdzany podczas wykonywania; zapisane narzędzia i referencje przesłanych plików należą do tego użytkownika, również gdy dane uwierzytelniające są powiązane z zespołem.
* Pomyślna akcja zużywa jedno wspólne miesięczne wywołanie API/MCP. Beginner pozwala na 500, Starter na 5,000, a Creator na 25,000 wywołań miesięcznie; Pro, Scale i Enterprise nie mają miesięcznego limitu. Nadal obowiązują limity na minutę: odpowiednio 30, 60, 120, 180, 300 i 600. Limity generowania narzędzi są odrębne.
* resultId to UUID z referencji ukończonego generowania lub result\_list tej domeny. Różni się od requestId akcji i historyId narzędzia internetowego.
* Wyniki należą do uwierzytelnionego użytkownika i domeny uprawnień. Wyniku subtitles nie można odczytać przez akcje transcription ani odwrotnie.
* Pełny zapisany JSON jest szyfrowany podczas przechowywania i zachowywany niezależnie od ograniczonej pamięci podręcznej sprawdzania stanu akcji. Pobieranie nadal wymaga uwierzytelnienia; publiczny adres URL pliku JSON transkrypcji lub napisów nie jest udostępniany.
* Te akcje pobierają istniejący wynik i nie generują multimediów ani nie zużywają dziennego limitu. Każde udane pobranie nadal zużywa jedno miesięczne wywołanie integracji.
* Metadane ze statusem pending oznaczają, że zapis wyniku wymaga odzyskania. Odczyt treści lub pobieranie podejmują próbę odzyskania już zapisanego zaszyfrowanego obiektu; sprawdź go przed rozpoczęciem kolejnego generowania.
* includeContent ma domyślną wartość false. true odszyfrowuje i zwraca pełny wygenerowany JSON w result. Ten przykład przedstawia wariant zwracający treść.
* Struktura zagnieżdżonego wyniku odpowiada jego pierwotnej operacji. Wyjścia transkrypcji zawierają tekst transkrypcji, wyjścia napisów mogą zawierać dane SRT lub wyrenderowanego wideo, a napisy słowne zawierają tekst słowa, startMs/endMs, speakerId dopuszczające null oraz durationSeconds.

## 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 | `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 | `VALIDATION_ERROR` | Argumenty nie spełniają schematu akcji lub podano nieznany argument. |
| 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 | `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 | `INSUFFICIENT_SCOPE` | Klucz API lub połączenie MCP nie ma uprawnienia wymaganego do wykonania tej akcji. |
| 403 | `INTEGRATION_PLAN_UNSUPPORTED` | Nie udało się zweryfikować limitów integracji konta. |
| 403 | `PAID_SUBSCRIPTION_REQUIRED` | Uwierzytelniony wywołujący nie ma już płatnej subskrypcji w chwili wykonywania tej akcji narzędzia. |
| 403 | `SUBSCRIPTION_REQUIRED` | Użyj aktywnej płatnej subskrypcji. |
| 403 | `TEAM_OWNER_NOT_FOUND` | Nie znaleziono konta faktycznego właściciela zespołu. |
| 404 | `TOOL_RESULT_NOT_FOUND` | Wynik nie istnieje, należy do innego podmiotu wykonującego akcję lub do drugiej domeny uprawnień. |
| 410 | `TOOL_RESULT_ACCOUNT_UNAVAILABLE` | Podczas odzyskiwania konto użytkownika wykonującego żądanie jest usuwane lub już nie istnieje. |
| 429 | `INTEGRATION_MONTHLY_LIMIT_REACHED` | Wykorzystane i oczekujące wywołania osiągnęły wspólny miesięczny limit API/MCP. |
| 429 | `INTEGRATION_RATE_LIMIT_REACHED` | Konto osiągnęło limit integracji na minutę; sprawdź retryAfterSeconds. |
| 500 | `INTERNAL_ERROR` | Nie udało się odczytać zapisanego ukończonego wyniku lub sprawdzenie jego integralności zakończyło się niepowodzeniem. |
| 503 | `INTERNAL_ERROR` | Oczekujący zapisany wynik wymaga odzyskania i nie można go jeszcze potwierdzić; sprawdź ten sam wynik ponownie przed ponownym generowaniem. |
| 503 | `SERVER_RESTARTING` | Serwer jest uruchamiany ponownie. Spróbuj ponownie wkrótce i zachowaj ten sam identyfikator żądania dla operacji zmieniającej dane. |

```json theme={null}
{
  "code": "INSUFFICIENT_SCOPE",
  "message": "This credential does not permit the requested action.",
  "status": 403,
  "details": {
    "requiredScopes": ["subtitles:read"]
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.