---
seo_title: SDK de conversion de fichiers pour 10 langages | EnConvert
meta_desc: SDK EnConvert officiels pour Node.js, Python, Go, Java, PHP, Ruby, C#, Rust, Kotlin et Swift : clients typés pour la conversion de fichiers et la web intelligence V2.
keywords: sdk conversion de fichiers, bibliothèque client api, sdk enconvert, sdk python conversion de fichiers, convertir des fichiers avec node js, client api pdf en go, bibliothèque java conversion de documents, sdk php convertisseur de fichiers, gem ruby conversion, sdk url vers pdf, sdk scraping web, bibliothèque client conversion de documents
---

# SDK de conversion de fichiers

Bibliothèques client officielles pour l'API EnConvert, publiées pour dix langages : Node.js, Python, Go, Java, PHP, Ruby, C#, Rust, Kotlin et Swift. Chaque SDK couvre les deux mêmes surfaces derrière une seule clé API. La surface de conversion transforme des fichiers et des URL en d'autres formats, et la surface de web intelligence V2 perçoit, découvre, recherche, extrait, ingère et surveille des pages web en direct. Chaque client expose ces endpoints sous forme de méthodes typées, gère l'authentification, et renvoie des URL de téléchargement pré-signées.

<div class="alert alert-info">
<strong>Le même format de transport partout.</strong> Chaque SDK appelle les mêmes endpoints REST publics documentés sur ce site : vous pouvez donc mélanger appels SDK et appels HTTP bruts sur le même projet et avec la même clé.
</div>

---

## SDK disponibles

| Langage | Package | Installation | Source |
|----------|---------|---------|--------|
| Node.js / TypeScript | `@enconvert/node-sdk` | `npm install @enconvert/node-sdk` | [enconvert/node-sdk](https://github.com/enconvert/node-sdk) |
| Python | `enconvert` | `pip install enconvert` | [conversionapi/python-sdk](https://github.com/conversionapi/python-sdk) |
| Go | `github.com/conversionapi/go-sdk` | `go get github.com/conversionapi/go-sdk` | [conversionapi/go-sdk](https://github.com/conversionapi/go-sdk) |
| Java | `com.enconvert:enconvert-sdk` | Dépendance Maven Central | [conversionapi/java-sdk](https://github.com/conversionapi/java-sdk) |
| PHP | `enconvert/enconvert-php` | `composer require enconvert/enconvert-php` | [conversionapi/php-sdk](https://github.com/conversionapi/php-sdk) |
| Ruby | `enconvert` | `gem install enconvert` | [conversionapi/ruby-sdk](https://github.com/conversionapi/ruby-sdk) |
| C# / .NET | `Enconvert` | `dotnet add package Enconvert` | [conversionapi/csharp-sdk](https://github.com/conversionapi/csharp-sdk) |
| Rust | `enconvert` | `cargo add enconvert` | [conversionapi/rust-sdk](https://github.com/conversionapi/rust-sdk) |
| Kotlin | `com.enconvert:enconvert-kotlin` | Dépendance Maven Central | [conversionapi/kotlin-sdk](https://github.com/conversionapi/kotlin-sdk) |
| Swift | `Enconvert` | Swift Package Manager | [conversionapi/swift-sdk](https://github.com/conversionapi/swift-sdk) |

Les dix sont sous licence MIT.

---

## Choisissez votre langage

- **[Node.js / TypeScript](/fr/docs/guides/integrations/sdks/nodejs.md)** : Node 18+, zéro dépendance runtime, builds ESM et CJS, définitions de types complètes.
- **[Python](/fr/docs/guides/integrations/sdks/python.md)** : Python 3.9+, dataclasses typées, marqueur `py.typed` livré pour mypy.
- **[Go](/fr/docs/guides/integrations/sdks/go.md)** : Go 1.21+, bibliothèque standard uniquement, aucune dépendance tierce.
- **[Java](/fr/docs/guides/integrations/sdks/java.md)** : Java 17+, une seule dépendance (Gson), HTTP via le `HttpClient` du JDK.
- **[PHP](/fr/docs/guides/integrations/sdks/php.md)** : PHP 8.1+, installé avec Composer, autoloadé en PSR-4.
- **[Ruby](/fr/docs/guides/integrations/sdks/ruby.md)** : Ruby 3.0+, empaqueté sous forme de gem `enconvert`.
- **[C# / .NET](/fr/docs/guides/integrations/sdks/csharp.md)** : .NET 8+, méthodes asynchrones de bout en bout, types référence nullables activés.
- **[Rust](/fr/docs/guides/integrations/sdks/rust.md)** : un client bloquant construit sur `reqwest`, donc aucun runtime asynchrone n'est nécessaire.
- **[Kotlin](/fr/docs/guides/integrations/sdks/kotlin.md)** : JDK 17+, data classes idiomatiques et `kotlinx.serialization`.
- **[Swift](/fr/docs/guides/integrations/sdks/swift.md)** : macOS 12+, iOS 15+, tvOS 15+ et watchOS 8+, avec des méthodes async await.

Vous n'écrivez pas de code ? La [CLI](/fr/docs/guides/integrations/cli.md) couvre la même API depuis un terminal, le [serveur MCP](/fr/docs/guides/integrations/mcp-setup.md) la branche sur Claude, Cursor et Windsurf, et le [nœud n8n](/fr/docs/guides/integrations/n8n.md) l'intègre dans un workflow.

---

## Pourquoi utiliser un SDK ?

Appeler l'API REST directement fonctionne très bien, et les SDK ajoutent quatre choses par-dessus :

- **Options typées.** L'autocomplétion de l'éditeur couvre chaque paramètre de chaque endpoint : une faute de frappe dans un nom de champ échoue donc à la compilation ou à l'import, au lieu de revenir sous forme de `422`.
- **Récupération automatique après timeout.** Les rendus URL vers PDF lourds et les documents volumineux dépassent parfois le timeout du reverse proxy, même quand la conversion réussit côté serveur. Les SDK génèrent un `job_id` côté client, l'envoient avec la requête, et se rabattent discrètement sur l'interrogation de `GET /v1/convert/status/{job_id}` si l'appel initial renvoie une 5xx. Vous n'écrivez aucun code supplémentaire.
- **Téléchargements en flux.** Pointez une méthode vers un chemin local et le SDK écrit la réponse directement sur le disque avec gestion de la contre-pression : la consommation mémoire reste plate quelle que soit la taille de la sortie.
- **Erreurs cohérentes.** Une petite hiérarchie d'exceptions vous laisse attraper les erreurs par classe au lieu d'analyser les codes de statut à la main.

---

## Les deux surfaces

Chaque SDK répartit ses méthodes de la même façon.

| Surface | Ce qu'elle fait | Référence REST |
|---------|--------------|----------------|
| Conversion | Documents, images, formats de données, URL et sites entiers convertis vers d'autres formats | [Vue d'ensemble des endpoints](/fr/docs/endpoints.md) |
| Web intelligence (V2) | Percevoir, découvrir, rechercher, extraire, ingérer et surveiller des pages web en direct | [V1 et V2](/fr/docs/concepts/v1-and-v2.md) |

Chaque rendu V2 porte également un score `render_quality` compris entre 0.0 et 1.0. Une page bloquée, un interstitiel de défi anti-bot ou une coquille vide d'application monopage revient signalée par un score bas et des avertissements, plutôt que de passer silencieusement pour du vrai contenu : une mauvaise lecture n'entre donc jamais discrètement dans le contexte d'un agent.

---

## Obtenir une clé API

Chaque SDK a besoin d'une clé API privée (`sk_...`). Générez-en une depuis le [tableau de bord](/fr/dashboard) et passez-la au constructeur, en la lisant depuis une variable d'environnement ou votre gestionnaire de secrets. N'écrivez jamais une clé privée en dur et ne l'embarquez jamais dans du code côté client. Le code navigateur doit utiliser une clé publique (`pk_`) avec un JWT, comme décrit dans [Clés publiques et JWT](/fr/docs/authentication.md#public-keys-and-jwt).

---

## Questions fréquentes

### Quels langages disposent d'un SDK officiel de conversion de fichiers ?

Dix : Node.js et TypeScript, Python, Go, Java, PHP, Ruby, C# et .NET, Rust, Kotlin et Swift. Les dix sont officiels, sous licence MIT, et suivent la même API REST : une fonctionnalité qui arrive dans l'API est donc accessible depuis n'importe lequel d'entre eux.

### Pourquoi utiliser un SDK plutôt qu'appeler directement l'API REST de conversion de fichiers ?

Les SDK ajoutent des options typées avec autocomplétion dans l'éditeur, une récupération automatique après timeout pour les conversions longues, des téléchargements en flux directement sur le disque, et une hiérarchie d'erreurs cohérente qui vous permet d'attraper par classe d'exception sans analyser les codes de statut.

### Comment le SDK gère-t-il les conversions qui dépassent le timeout du reverse proxy ?

Le SDK génère un `job_id` côté client, l'envoie avec la requête, et se rabat sur l'interrogation de `GET /v1/convert/status/{job_id}` si la requête initiale renvoie une 5xx. Il renvoie le résultat dès que la tâche est enregistrée comme réussie, et lève une erreur si elle est enregistrée comme échouée.

### Puis-je mélanger appels SDK et requêtes HTTP brutes ?

Oui. Chaque SDK appelle les mêmes endpoints REST publics documentés sur ce site : les appels SDK et les appels HTTP écrits à la main peuvent donc partager un même projet et une même clé.

### Les SDK couvrent-ils les endpoints de web intelligence V2 ?

Oui. Les dix exposent un espace de noms V2 couvrant perceive, discover, lookup, distill, ingest et watch, en plus des méthodes de conversion de fichiers. Consultez la [V1 et V2](/fr/docs/concepts/v1-and-v2.md) pour savoir ce que fait chaque endpoint.

### De quelle clé API un SDK a-t-il besoin ?

D'une clé API privée (`sk_...`), générée depuis le tableau de bord et passée au constructeur. Lisez-la depuis une variable d'environnement plutôt que de l'écrire en dur, et ne l'intégrez jamais à du code côté client. Le code navigateur doit utiliser une clé publique avec un JWT.

### Existe-t-il un SDK pour mon langage s'il n'est pas dans la liste ?

Pas encore, et vous n'en avez pas besoin. L'API est du REST classique avec des corps JSON et multipart : n'importe quel client HTTP fonctionne. Partez de la [vue d'ensemble des endpoints](/fr/docs/endpoints.md) et du [guide d'authentification](/fr/docs/authentication.md).
