# General Translation Platform: uploadFonts
URL: https://generaltranslation.com/es/docs/platform/core/reference/gt-class-methods/translation/upload-fonts.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Carga recursos de fuentes persistentes para flujos de trabajo de traducción de Lottie. Referencia de la API de uploadFonts.

Carga fuentes TrueType u OpenType a través de un proyecto para que los trabajos de traducción de Lottie de la misma Organization puedan usarlas durante el procesamiento de diseño.

## Descripción general [#overview]

Llame a `uploadFonts` con hasta 10 recursos de fuentes codificados en Base64. Devuelve los identificadores de los recursos almacenados. Para subir más fuentes, repártalas en varias llamadas de un máximo de 10 fuentes cada una.

```typescript
const result = await gt.uploadFonts(fonts, {
  timeout: 30000,
});
```

Firma:

```typescript
uploadFonts(
  fonts: AssetUpload[],
  options?: UploadAssetsOptions
): Promise<UploadAssetsResponse>
```

*Nota: `uploadFonts` requiere una clave de API de Organization con `org:assets:write` (**Organization assets** en el panel de control), proporcionada como `apiKey` o mediante el alias obsoleto `devApiKey`, además de un `projectId` en la instancia de GT. Las claves de API de Project reciben un error 403.*

## Cómo funciona [#how-it-works]

* El contenido de la fuente ya está codificado en Base64 cuando se pasa al método.
* Cada fuente debe tener un nombre de archivo `.ttf` u `.otf` y, al decodificarse, no superar los 20 MB.
* El proyecto determina qué Organization es propietaria de la fuente. Las fuentes subidas se conservan para los trabajos de traducción de esa Organization.
* El servicio obtiene de los metadatos de la fuente la familia tipográfica, el peso y el estilo de cursiva, y recurre al nombre de archivo si es necesario. Volver a subir una fuente con la misma identidad derivada reemplaza el recurso almacenado.
* La API acepta como máximo 10 fuentes por solicitud y rechaza con un error 400 las solicitudes que superan ese límite. El método solo divide en varias solicitudes las entradas con más de 50 fuentes, por lo que una llamada con 11 fuentes o más falla. Llama a `uploadFonts` una vez por cada grupo de hasta 10 fuentes.

(Consulta [Subir recursos del proyecto](/docs/platform/openapi/reference/organizations/upsert-assets) para obtener información sobre el comportamiento de validación, identidad y reintentos).

## Parámetros [#parameters]

| Parámetro             | Descripción                                | Tipo                  | Opcional | Predeterminado |
| --------------------- | ------------------------------------------ | --------------------- | -------- | -------------- |
| [`fonts`](#fonts)     | Fuentes codificadas en Base64 para cargar. | `AssetUpload[]`       | No       | —              |
| [`options`](#options) | Configuración de la solicitud.             | `UploadAssetsOptions` | Sí       | `{}`           |

### `fonts` [#fonts]

**Tipo** `AssetUpload[]` · **Obligatorio**

| Campo       | Descripción                                      | Tipo     | Opcional |
| ----------- | ------------------------------------------------ | -------- | -------- |
| `assetType` | Tipo de recurso. Solo se admite `FONT`.          | `'FONT'` | No       |
| `content`   | Bytes de fuente codificados en Base64.           | `string` | No       |
| `fileName`  | Nombre de archivo con extensión `.ttf` o `.otf`. | `string` | No       |

### `options` [#options]

**Tipo** `UploadAssetsOptions` · **Opcional** · **Predeterminado** `{}`

| Campo     | Descripción                                       | Tipo     | Opcional |
| --------- | ------------------------------------------------- | -------- | -------- |
| `timeout` | Tiempo de espera de la solicitud en milisegundos. | `number` | Sí       |

## Devuelve [#returns]

**Tipo** `Promise<UploadAssetsResponse>`

Se resuelve con los identificadores de los recursos almacenados y el número de fuentes procesadas:

| Propiedad           | Descripción                                                          | Tipo              |
| ------------------- | -------------------------------------------------------------------- | ----------------- |
| `assets`            | Recursos de fuentes almacenados.                                     | `UploadedAsset[]` |
| `assets[].id`       | ID del recurso almacenado de Organization.                           | `string`          |
| `assets[].assetKey` | Identidad de fuente derivada con el formato `<family>-<weight>[-i]`. | `string`          |
| `assets[].fileName` | Nombre de archivo proporcionado al subir.                    | `string`          |
| `count`             | Número de fuentes procesadas.                                        | `number`          |

<Callout type="info">
  **Cambio en v9.5.0:** `UploadedAsset` ya no declara el campo `deduped`, que el servicio nunca devolvía. Subir una fuente con la misma identidad derivada reemplaza el recurso almacenado (consulta [Cómo funciona](#how-it-works)).
</Callout>

## Ejemplo [#example]

```typescript title="upload-fonts.ts"
import { readFile } from 'node:fs/promises';
import { GT } from 'generaltranslation';

// Una clave de API de Organization (gtx-org-) con el permiso org:assets:write.
const gt = new GT({
  apiKey: process.env.GT_API_KEY,
  projectId: process.env.GT_PROJECT_ID,
});

const fileNames = ['BrandSans.ttf', 'BrandSans-Bold.ttf'];
const fonts = await Promise.all(
  fileNames.map(async (fileName) => ({
    assetType: 'FONT' as const,
    content: (await readFile(`./public/fonts/${fileName}`)).toString('base64'),
    fileName,
  }))
);

// La API acepta como máximo 10 fuentes por solicitud.
for (let i = 0; i < fonts.length; i += 10) {
  const result = await gt.uploadFonts(fonts.slice(i, i + 10));
  console.log(result.assets.map((asset) => asset.assetKey));
}
```

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
