Retour

Documentation API

API REST pour un accès programmatique à tous les services LoadSh.it

v1.0

Introduction

L'API LoadSh.it offre un accès programmatique à la conversion de fichiers, aux scans de sécurité, à la transcription et à tous les outils IA Boost (bg-remove, upscaling, génération de sous-titres, tableau-blanc→diagramme, chat avec PDF, générateur de diapositives, etc.).

80+ formats

Vidéo, audio, images, documents

Scan ClamAV

Antivirus entreprise

Whisper AI

Transcription en 99 langues

Outils IA Boost

30+ outils GPU/LLM, API de dispatch unifiée

Authentification

Toutes les requêtes API nécessitent une clé API valide dans l'en-tête Authorization Header. Les clés API peuvent être créées dans les Paramètres .

En-tête HTTP
Authorization: Bearer lsh_live_xxxxxxxxxxxxxxxxxxxxxxxx
Important : Conservez votre clé API en sécurité. Elle n'est affichée qu'une seule fois lors de la création et ne peut pas être récupérée.

URL de base

https://loadsh.it/api

Tous les endpoints sont relatifs à cette URL de base.

Limites de débit

L'API n'a actuellement pas de limites de débit strictes pour les utilisateurs authentifiés. Nous nous réservons le droit d'introduire des limites en cas d'abus.

Requêtes/Min Taille max. fichier
Illimité 5 GB

Endpoints

POST /api/nodrift/upload/presign

Presigned Upload-URL anfordern

Erster Schritt für jede Verarbeitung: holt eine signierte Upload-URL plus den `file_key`, den die anderen Endpoints später referenzieren.

Paramètres

Nom Type Description
filename required string Original-Dateiname inkl. Endung.
size required number Dateigrösse in Bytes.
content_type string MIME-Typ (z.B. video/mp4).

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "upload_url": "https://...",
  "file_key": "inputs/1/abc.mp4"
}
POST /api/convert

Convertir un fichier

Convertit un fichier dans un autre format. Deux chemins : SOIT `jobId` du flux multipart /api/upload (frontend), SOIT `file_key` de /api/nodrift/upload/presign (utilisation API programmatique — recommandé). La réponse contient `job_id` à interroger via /api/nodrift/jobs/<id>. Aucune création de conteneur nécessaire — nodrift.ch gère le pool GPU sans serveur.

Paramètres

Nom Type Description
jobId required string Job ID de /api/upload (frontend) OU file_key de /api/nodrift/upload/presign (API).
targetFormat required string Format cible (ex. "mp4", "pdf", "png").
processing_mode string "auto" | "force_cpu" | "force_gpu" — avec le chemin file_key, le routage est automatique.

Exemples

cURL
BASH
curl -X POST "https://loadsh.it/api/convert" \
  -H "Authorization: Bearer lsh_live_xxxx" \
  -F "file=@video.mov" \
  -F "target_format=mp4"
JavaScript
JAVASCRIPT
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('target_format', 'mp4');

const response = await fetch(
  'https://loadsh.it/api/convert',
  {
    method: 'POST',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' },
    body: formData
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "job_id": "job_abc123",
  "status": "processing"
}
POST /api/scan

Scan de sécurité

Analyse un fichier pour détecter virus, malware et autres menaces avec ClamAV & YARA Rules.

Paramètres

Nom Type Description
file_key required string Le fichier à analyser (multipart/form-data)
original_filename string Original-Dateiname für Logs/Verlauf.

Exemples

cURL
BASH
curl -X POST "https://loadsh.it/api/scan" \
  -H "Authorization: Bearer lsh_live_xxxx" \
  -F "file=@download.exe"
JavaScript
JAVASCRIPT
const formData = new FormData();
formData.append('file', fileInput.files[0]);

const response = await fetch(
  'https://loadsh.it/api/scan',
  {
    method: 'POST',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' },
    body: formData
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "job_id": "job_xyz789",
  "status": "queued"
}
POST /api/transcript

Transcription audio/vidéo

Transcrit audio/vidéo via Whisper à travers le flux nodrift /jobs/dispatch (Spec 2026-05). Attend un file_key de l'upload presign. Renvoie un job_id ; le client interroge /api/nodrift/jobs/<id> jusqu'à status=completed — qui contient transcript, language, srt_url et vtt_url. Plus besoin de créer un conteneur.

Paramètres

Nom Type Description
file_key required string R2 file_key de /api/nodrift/upload/presign.
language required string Code ISO-639-1 (de, en, fr, …). Laisser vide pour détection automatique.
output_format string "text" (défaut), "timestamps", "srt", "vtt".

Exemples

cURL
BASH
curl -X POST "https://loadsh.it/api/transcript" \
  -H "Authorization: Bearer lsh_live_xxxx" \
  -F "file=@interview.mp4" \
  -F "language=de"
JavaScript
JAVASCRIPT
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('language', 'de');

const response = await fetch(
  'https://loadsh.it/api/transcript',
  {
    method: 'POST',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' },
    body: formData
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "job_id": "job_def456",
  "status": "processing"
}
GET /api/nodrift/jobs/:jobId

Obtenir le statut du job

Vérifie le statut actuel d'un job en cours ou terminé.

Paramètres

Nom Type Description
jobId required string L'ID du job de la requête originale

Exemples

cURL
BASH
curl -X GET "https://loadsh.it/api/status/conv_abc123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/status/conv_abc123',
  {
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "status": "completed",
  "progress": 100,
  "download_url": "https://loadsh.it/api/nodrift/download/..."
}
POST /api/nodrift/jobs/dispatch

Lancer un outil IA/Boost

Dispatch universel pour les 30+ outils IA Boost (bg-remove, upscale, voice-isolate, document-scan, chat-pdf, slides-generate, video-dub, …). task_type choisit l'outil, ai_options sont spécifiques à l'outil.

Paramètres

Nom Type Description
service required string Toujours "ai" pour les outils Boost.
task_type required string Slug de l'outil, ex. "bg-remove", "subtitle-generate", "chat-pdf". Liste via /api/nodrift/capabilities.
file_key string R2 file_key du presign. Optionnel pour slides-generate (topic-only).
ai_options object Objet spécifique à l'outil — ex. { output_bg, edge_feather } pour bg-remove.
target_lang string Optionnel — langue cible de traduction pour subtitle-generate (top-level, PAS dans ai_options).

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "job_id": "job_xxxxx",
  "status": "processing",
  "credits_cost": 4,
  "routing": {
    "use_gpu": true,
    "worker": "gpu"
  },
  "gpu_starting": false
}
GET /api/health

Vérification santé

Endpoint de statut pour les smoke tests. Renvoie { status: "ok", timestamp }. Sans auth — utilisable pour le monitoring externe.

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "status": "ok",
  "timestamp": 1735689600000
}
GET /api/nodrift/credits

Solde de crédits

Renvoie le solde de crédits nodrift du compte authentifié. Utile avant de dispatcher des tâches coûteuses.

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "credits": 142,
  "currency": "CHF"
}
GET /api/nodrift/jobs

Liste des jobs

Liste les jobs nodrift de votre compte (paginé via ?limit & ?cursor). Filtre : ?status=queued|processing|completed|failed.

Paramètres

Nom Type Description
limit number Page size (default 20, max 100).
cursor string Cursor from previous response.
status string queued | processing | completed | failed

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "jobs": [
    {
      "job_id": "job_abc",
      "status": "completed",
      "task_type": "bg-remove"
    }
  ],
  "next_cursor": null
}
DELETE /api/nodrift/jobs/:jobId

Annuler un job

Interrompt un job en cours. DELETE /api/nodrift/jobs/<job_id>. Si le job est déjà terminé : 409.

Paramètres

Nom Type Description
jobId required string Job-ID aus Dispatch-Antwort.

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "status": "cancelled"
}
POST /api/import-url

Import depuis URL

Importe un fichier depuis une URL publique (YouTube, lien direct) au lieu d'un upload multipart. Corps : { url, target_format? }.

Paramètres

Nom Type Description
url required string Source (URL https, YouTube/Vimeo/etc.).
target_format string Format cible optionnel — la conversion suit l'import si défini.

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "jobId": "job_imp_xyz",
  "status": "queued"
}
POST /api/ai/:taskType

Outils IA universels

Endpoint unifié POST /api/ai/<task_type> pour les ~50 outils Boost (bg-remove, upscale, ocr-pro, headshot-generate, slides-generate, chat-pdf, math-solve, voice-clone, video-summarize, …). Corps : { file_key, ai_options? } — pour slides-generate { topic }, pour chat-pdf { pdf_file_key, question | prior_messages }. Réponse : { job_id, poll_url, gpu_starting, credits_cost }. Liste via GET /api/ai.

Paramètres

Nom Type Description
:taskType required string Paramètre de chemin — ex. bg-remove, upscale, ocr-pro, headshot-generate.
file_key string Clé R2 de /api/nodrift/upload/presign. Pas nécessaire pour slides-generate (utiliser topic) ou chat-pdf (utiliser pdf_file_key).
ai_options object Paramètres spécifiques à la tâche (ex. scale=2 pour upscale, tone=professional pour cover-letter).

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "job_id": "job_abc123",
  "status": "queued",
  "gpu_starting": false,
  "credits_cost": 2,
  "poll_url": "https://loadsh.it/api/nodrift/jobs/job_abc123"
}
GET /api/ai

Découverte d'outils

Liste tous les task_types disponibles avec chemin d'endpoint et entrées requises. Utiliser /api/nodrift/capabilities pour les limites + coûts en crédits par tâche.

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "tasks": [
    {
      "task_type": "bg-remove",
      "service": "image-gen",
      "endpoint": "/api/ai/bg-remove",
      "required_input": "file_key"
    },
    {
      "task_type": "slides-generate",
      "service": "llm",
      "endpoint": "/api/ai/slides-generate",
      "required_input": "topic"
    },
    {
      "task_type": "chat-pdf",
      "service": "llm",
      "endpoint": "/api/ai/chat-pdf",
      "required_input": "pdf_file_key+question"
    }
  ]
}
GET /api/nodrift/capabilities

Lister les capacités des outils

Liste tous les outils disponibles avec pricing, engine, burst tier, max_input_mb et langues supportées. Mise en cache 5 min en bord. Pas d'auth requise.

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "tools": {
    "bg-remove": {
      "available": true,
      "credit_cost": 2,
      "category": "gpu",
      "max_input_mb": 25
    },
    "subtitle-generate": {
      "available": true,
      "credit_cost": 3,
      "category": "gpu",
      "burst_tier": "whisper"
    },
    "chat-pdf": {
      "available": true,
      "credit_cost": 1,
      "category": "workers-ai"
    }
  }
}
POST /api/nodrift/gpu/warmup

Déclencher le pré-réchauffement GPU

Optionnel — déclenche le conteneur GPU avant le dispatch réel. Économise 30-60s de cold-start. Body : { service, task_type? }. Service parmi "vision" | "ocr" | "llm" | "image-gen" | "audio-gen" | "video" | "transcribe".

Paramètres

Nom Type Description
service required string Nom du pool GPU.
task_type string Optionnel — affine le pool.

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "triggered": true,
  "status": 202
}
GET /api/user/api-keys

Lister les clés API

Liste toutes les clés API de l'utilisateur authentifié.

Exemples

cURL
BASH
curl -X GET "https://loadsh.it/api/user/api-keys" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys',
  {
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "keys": [
    {
      "id": "key_123",
      "name": "Production",
      "created_at": "2025-01-01",
      "last_used": "2025-01-03"
    }
  ]
}
POST /api/user/api-keys

Créer une clé API

Crée une nouvelle clé API. La clé complète n'est affichée qu'une seule fois !

Paramètres

Nom Type Description
name required string Nom/description de la clé

Exemples

cURL
BASH
curl -X POST "https://loadsh.it/api/user/api-keys" \
  -H "Authorization: Bearer lsh_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{"name": "My App"}'
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer lsh_live_xxxx',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ name: 'My App' })
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "key": {
    "id": "key_456",
    "name": "My App",
    "token": "lsh_live_xxxxxxxxxxxxxxxxxxxxxxxx"
  }
}
DELETE /api/user/api-keys/:id

Supprimer une clé API

Supprime définitivement une clé API.

Paramètres

Nom Type Description
id required string ID de la clé à supprimer

Exemples

cURL
BASH
curl -X DELETE "https://loadsh.it/api/user/api-keys/key_123" \
  -H "Authorization: Bearer lsh_live_xxxx"
JavaScript
JAVASCRIPT
const response = await fetch(
  'https://loadsh.it/api/user/api-keys/key_123',
  {
    method: 'DELETE',
    headers: { 'Authorization': 'Bearer lsh_live_xxxx' }
  }
);
const data = await response.json();

Réponse

JSON
{
  "success": true,
  "message": "Key deleted"
}

Codes d'erreur

Code Signification
400 Requête invalide (paramètres manquants)
401 Non authentifié (clé API invalide)
403 Accès refusé (limite atteinte)
404 Job ou ressource non trouvé
413 Fichier trop volumineux
429 Trop de requêtes
500 Erreur serveur