# AIOZ Stream — Media Transcripts

SDK package: @aiozstream/nodejs-client
Note: Transcripts are not yet in the SDK — use fetch with API key headers.

## Setup

```typescript
const HEADERS = {
  'stream-public-key': process.env.AIOZ_PUBLIC_KEY,
  'stream-secret-key': process.env.AIOZ_SECRET_KEY
}
const BASE = 'https://api.aiozstream.network/api'
```

One transcript per language per media. Language codes follow BCP 47 format (e.g. 'en', 'fr', 'en-US').
If a transcript for a primary language already exists, the request is rejected.

---

## Add Transcript

POST https://api.aiozstream.network/api/media/{mediaId}/transcripts/{lan}

```typescript
import fs from 'fs'
import FormData from 'form-data'
import fetch from 'node-fetch'

async function addTranscript(mediaId: string, lan: string, filePath: string) {
  const form = new FormData()
  form.append('file', fs.createReadStream(filePath))

  const res = await fetch(`${BASE}/media/${mediaId}/transcripts/${lan}`, {
    method: 'POST',
    headers: { ...HEADERS, ...form.getHeaders() },
    body: form
  })
  return res.json()
}

// result.data.mediaTranscript: { url, language, status, description, is_default }
```

---

## List Transcripts

GET https://api.aiozstream.network/api/media/{mediaId}/transcripts

```typescript
const res = await fetch(
  `${BASE}/media/${mediaId}/transcripts?offset=0&limit=25`,
  { headers: HEADERS }
)
const result = await res.json()
// result.data.mediaTranscripts: Array<{ url, language, status, is_default }>
// result.data.total
```

---

## Set Default Transcript

PATCH https://api.aiozstream.network/api/media/{mediaId}/transcripts/{lan}

```typescript
const res = await fetch(`${BASE}/media/${mediaId}/transcripts/en`, {
  method: 'PATCH',
  headers: { ...HEADERS, 'Content-Type': 'application/json' },
  body: JSON.stringify({ is_default: true })
})
```

---

## Delete Transcript

DELETE https://api.aiozstream.network/api/media/{mediaId}/transcripts/{lan}

```typescript
const res = await fetch(`${BASE}/media/${mediaId}/transcripts/en`, {
  method: 'DELETE',
  headers: HEADERS
})
```

Note: Deleting the default transcript clears the default setting. Call Set Default Transcript to assign a new one.
