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

# Mídia

> Envie e gerencie fundos reutilizáveis, logotipos e vídeos de intro/outro

Mídia são arquivos reutilizáveis — fundos em vídeo, imagens estáticas, logotipos e clipes de intro/outro — que você pode referenciar a partir de presets ou das configurações do projeto. Envie uma vez e reutilize em vários projetos.

## Tipos de mídia

| Tipo          | Descrição                            |
| ------------- | ------------------------------------ |
| `video`       | Vídeo de fundo em loop.              |
| `image`       | Imagem de fundo estática.            |
| `logo`        | Sobreposição de logotipo.            |
| `intro-video` | Reproduz antes do karaokê começar.   |
| `outro-video` | Reproduz depois do karaokê terminar. |

## `client.media.list(options?)`

Liste todos os itens de mídia reutilizáveis pertencentes à conta autenticada.

```ts theme={null}
const media = await client.media.list();
```

## `client.media.get(mediaId, options?)`

Busque um único item de mídia.

```ts theme={null}
const media = await client.media.get("bg_abc123");
```

## `client.media.create(body, options?)`

Crie um novo item de mídia a partir de um caminho local, bytes ou de um `inputFileId` já enviado. Para caminhos locais e bytes, o SDK prepara o upload, envia os bytes do arquivo para a URL de upload e registra o arquivo enviado como mídia reutilizável.

```ts theme={null}
const media = await client.media.create({
  type: "video",
  source: {
    type: "path",
    path: "./background.mp4",
    contentType: "video/mp4",
  },
});
```

<ParamField path="type" type="'video' | 'image' | 'logo' | 'intro-video' | 'outro-video'" required>
  Qual função este item de mídia desempenha em uma renderização.
</ParamField>

<ParamField path="source" type="object">
  A origem do arquivo. Use `{ type: "path", path }` para arquivos locais, `{ type:
      "bytes", data, filename }` para dados `Blob`, `File`, `ArrayBuffer` ou de array
  tipado, ou `{ type: "inputFile", inputFileId }` quando você já tiver um ID de
  upload.
</ParamField>

<ParamField path="inputFileId" type="string">
  Opção avançada de baixo nível: passe o ID retornado por
  `client.uploads.create(...)` em vez de `source`.
</ParamField>

## `client.media.delete(mediaId, options?)`

Exclua um item de mídia.

```ts theme={null}
await client.media.delete("bg_abc123", {
  idempotencyKey: "delete-bg_abc123",
});
```

<Warning>
  Excluir uma mídia não afeta projetos ou exports que já tenham sido renderizados
  com ela. Renderizações futuras que referenciem a mídia excluída usarão o fundo
  padrão como fallback.
</Warning>

## Exemplo de ponta a ponta

```ts theme={null}
import { YoukaClient } from "@youka/sdk";

const client = new YoukaClient({ apiKey: process.env.YOUKA_API_KEY! });

async function uploadBackground(path: string, contentType: string) {
  return client.media.create({
    type: "video",
    source: {
      type: "path",
      path,
      contentType,
    },
  });
}

const media = await uploadBackground("./loop.mp4", "video/mp4");
console.log("Media ID:", media.id);
```

## Aplicando um fundo

Referencie a mídia enviada a partir de um preset ou diretamente das configurações do projeto:

```ts theme={null}
const media = await uploadBackground("./loop.mp4", "video/mp4");

await client.projects.updateSettings("prj_abc123", {
  settings: {
    style: {
      background: {
        type: "video",
        url: media.url,
        objectFit: "cover",
      },
    },
  },
});
```

Para o conjunto completo de campos aceitos em `background`, converta o schema de configurações do projeto para JSON:

```ts theme={null}
import { RestUpdateProjectSettingsRequestSchema } from "@youka/sdk";

const schema = RestUpdateProjectSettingsRequestSchema.toJSONSchema();
```

## Próximos passos

* [Referência de configurações de renderização](/en/render-settings-reference) — todos os caminhos de campos compartilhados e valores de enum
* [Projects](/pt/sdk/projects) — criação de projeto e uploads
* [Presets](/pt/sdk/presets) — agrupe mídia com outras configurações de renderização
* [Project settings](/pt/sdk/project-settings) — aplique fundos a um projeto
