# General Translation Platform: uploadFonts
URL: https://generaltranslation.com/fr/docs/platform/core/reference/gt-class-methods/translation/upload-fonts.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Téléverse des ressources de police persistantes pour les workflows de traduction Lottie. Référence de l’API uploadFonts.

Téléverse des polices TrueType ou OpenType via un projet afin que les tâches de traduction Lottie de la même Organization puissent les utiliser lors du traitement de la mise en page.

## Présentation [#overview]

Appelez `uploadFonts` avec jusqu’à 10 ressources de police encodées en Base64. La méthode renvoie les identifiants des ressources stockées. Pour téléverser davantage de polices, répartissez-les en plusieurs appels de 10 polices maximum chacun.

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

Signature :

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

*Remarque : `uploadFonts` nécessite une clé API d’Organisation disposant de l’autorisation `org:assets:write` (**Organization assets** dans le tableau de bord), transmise via `apiKey` ou l’alias déprécié `devApiKey`, ainsi qu’un `projectId` dans l’instance GT. Les requêtes effectuées avec une clé API de projet renvoient une erreur 403.*

## Fonctionnement [#how-it-works]

* Le contenu des polices est déjà encodé en Base64 lorsqu’il est transmis à la méthode.
* Chaque police doit avoir un nom de fichier avec l’extension `.ttf` ou `.otf` et ne doit pas dépasser 20 Mo une fois décodée.
* Le projet détermine quelle Organisation est propriétaire de la police. Les polices téléversées sont conservées pour toutes les tâches de traduction de cette Organisation.
* Le service déduit la famille de polices, la graisse et le style italique à partir des métadonnées de la police, puis se replie sur le nom de fichier. Téléverser à nouveau une police avec la même identité dérivée remplace la ressource stockée.
* L’API accepte au maximum 10 polices par requête et rejette toute requête qui dépasse cette limite avec une erreur 400. La méthode ne répartit en plusieurs requêtes que les entrées de plus de 50 polices : un appel avec 11 polices ou plus échoue donc. Appelez `uploadFonts` une fois par lot de 10 polices au maximum.

(Consultez [Téléverser les ressources du projet](/docs/platform/openapi/reference/organizations/upsert-assets) pour en savoir plus sur les règles de validation, l’identité et le comportement de nouvelle tentative).

## Paramètres [#parameters]

| Paramètre             | Description                              | Type                  | Facultatif | Par défaut |
| --------------------- | ---------------------------------------- | --------------------- | ---------- | ---------- |
| [`fonts`](#fonts)     | Polices encodées en Base64 à téléverser. | `AssetUpload[]`       | Non        | —          |
| [`options`](#options) | Options de la requête.                   | `UploadAssetsOptions` | Oui        | `{}`       |

### `fonts` [#fonts]

**Type** `AssetUpload[]` · **Obligatoire**

| Champ       | Description                                        | Type     | Facultatif |
| ----------- | -------------------------------------------------- | -------- | ---------- |
| `assetType` | Type de ressource. Seul `FONT` est pris en charge. | `'FONT'` | Non        |
| `content`   | Octets de police encodés en Base64.                | `string` | Non        |
| `fileName`  | Nom de fichier se terminant par `.ttf` ou `.otf`.  | `string` | Non        |

### `options` [#options]

**Type** `UploadAssetsOptions` · **Facultatif** · **Par défaut** `{}`

| Champ     | Description                                         | Type     | Facultatif |
| --------- | --------------------------------------------------- | -------- | ---------- |
| `timeout` | Délai d’expiration de la requête, en millisecondes. | `number` | Oui        |

## Renvoie [#returns]

**Type** `Promise<UploadAssetsResponse>`

Renvoie les identifiants des ressources de police stockées et le nombre de polices traitées :

| Propriété           | Description                                                   | Type              |
| ------------------- | ------------------------------------------------------------- | ----------------- |
| `assets`            | Ressources de police stockées.                                | `UploadedAsset[]` |
| `assets[].id`       | ID de la ressource Organisation stockée.                      | `string`          |
| `assets[].assetKey` | Identité de police dérivée au format `<family>-<weight>[-i]`. | `string`          |
| `assets[].fileName` | Nom de fichier fourni lors du téléversement.                        | `string`          |
| `count`             | Nombre de polices traitées.                                   | `number`          |

<Callout type="info">
  **Modifié dans la version v9.5.0 :** `UploadedAsset` ne déclare plus le champ `deduped`, que le service n’a jamais renvoyé. Téléverser une police ayant la même identité dérivée remplace la ressource stockée. (Voir [Fonctionnement](#how-it-works)).
</Callout>

## Exemple [#example]

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

// Une clé API d'organisation (gtx-org-) disposant de l'autorisation 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,
  }))
);

// L'API accepte au maximum 10 polices par requête.
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.
