Exemple rapide pour uploader un fichier :
curl -X POST https://cloud.kencode.dev/api/v1/files \
-H "X-API-Key: votre_api_key" \
-H "X-API-Secret: votre_secret" \
-F "file=@/path/to/file.pdf"
Bienvenue dans la documentation de KenCloud API. Une API RESTful simple et puissante pour gérer vos fichiers dans le cloud.
https://cloud.kencode.dev/api/v1
L'authentification à l'API se fait via des clés API que vous pouvez générer depuis votre dashboard.
X-API-Key:
votre_api_key
X-API-Secret:
votre_secret
Pour obtenir vos clés API, connectez-vous à votre dashboard et accédez à la section "Clés API".
Exemple rapide pour uploader un fichier :
curl -X POST https://cloud.kencode.dev/api/v1/files \
-H "X-API-Key: votre_api_key" \
-H "X-API-Secret: votre_secret" \
-F "file=@/path/to/file.pdf"
/files
Récupère la liste de tous vos fichiers uploadés.
curl -X GET https://cloud.kencode.dev/api/v1/files \
-H "X-API-Key: votre_api_key" \
-H "X-API-Secret: votre_secret"
{
"status": "success",
"message": "List of files retrieved successfully.",
"data": [
{
"id": 1,
"uuid": "9d7e8c3a-1b2c-4d5e-8f9a-1b2c3d4e5f6a",
"path": "https://cloud.kencode.dev/storage/files/document.pdf",
"original_name": "document.pdf",
"file_size": 151087,
"mime_type": "application/pdf",
"created_at": "2025-10-23T17:59:45.000000Z",
"human_file_size": "147.55 KB"
}
]
}
/files
Upload un nouveau fichier vers votre compte.
curl -X POST https://cloud.kencode.dev/api/v1/files \
-H "X-API-Key: votre_api_key" \
-H "X-API-Secret: votre_secret" \
-F "file=@/path/to/file.pdf"
{
"status": "success",
"message": "File uploaded successfully.",
"data": {
"id": 1,
"uuid": "9d7e8c3a-1b2c-4d5e-8f9a-1b2c3d4e5f6a",
"path": "https://cloud.kencode.dev/storage/files/document.pdf",
"original_name": "document.pdf",
"file_size": 151087,
"mime_type": "application/pdf",
"created_at": "2025-10-23T17:59:45.000000Z",
"human_file_size": "147.55 KB"
}
}
/files/{uuid}
Récupère les détails d'un fichier spécifique par son UUID.
curl -X GET https://cloud.kencode.dev/api/v1/files/9d7e8c3a-1b2c-4d5e-8f9a-1b2c3d4e5f6a \
-H "X-API-Key: votre_api_key" \
-H "X-API-Secret: votre_secret"
/files/{uuid}
Supprime définitivement un fichier de votre compte.
curl -X DELETE https://cloud.kencode.dev/api/v1/files/9d7e8c3a-1b2c-4d5e-8f9a-1b2c3d4e5f6a \
-H "X-API-Key: votre_api_key" \
-H "X-API-Secret: votre_secret"
Package officiel pour Node.js et navigateurs.
npm install @kencloud/js-sdk
Package officiel pour Python 3.7+.
pip install kencloud-python
SDK officiel pour PHP/Laravel. Auth API Key & Bearer, retries, logs, exceptions.
composer require kencloud/kencloud-api-php
KENCLOUD_BASE_URL=https://cloud.kencode.dev/api/v1 KENCLOUD_AUTH_TYPE=api_key KENCLOUD_API_KEY=... KENCLOUD_API_SECRET=... KENCLOUD_TIMEOUT=30 KENCLOUD_RETRIES=2 KENCLOUD_LOG=false
use KenCloud\Sdk\Facades\KenCloud;
$files = KenCloud::listFiles();
$upload = KenCloud::uploadFile(storage_path('app/document.pdf'));
Ce document explique en détail le fonctionnement du package PHP/Laravel du SDK KenCloud, comment l’installer, le configurer, l’utiliser dans vos applications (Facade, injection de dépendances), gérer l’authentification (API Key et Bearer), les erreurs, les uploads de fichiers, le logging, les retries, et les tests d’intégration.
PHP 8.2+, Laravel 10.x/11.x/12.x, Guzzle 7.9+/8.x
composer require kencloud/kencloud-api-php
Laravel détecte automatiquement le Service Provider et la Facade.
Base URL, timeouts, retries, type d’auth et logs via .env ou publication de config.
KENCLOUD_BASE_URL=https://cloud.kencode.dev/api/v1 KENCLOUD_TIMEOUT=30 KENCLOUD_RETRIES=2 KENCLOUD_AUTH_TYPE=api_key KENCLOUD_TOKEN= KENCLOUD_API_KEY= KENCLOUD_API_SECRET= KENCLOUD_LOG=false KENCLOUD_LOG_CHANNEL=stack
php artisan vendor:publish --provider="KenCloud\Sdk\KenCloudServiceProvider" --tag=config
return [
'base_url' => env('KENCLOUD_BASE_URL', 'https://cloud.kencode.dev/api/v1'),
'timeout' => (int) env('KENCLOUD_TIMEOUT', 30),
'retries' => (int) env('KENCLOUD_RETRIES', 2),
'auth' => [
'type' => env('KENCLOUD_AUTH_TYPE', 'api_key'),
'token' => env('KENCLOUD_TOKEN'),
'key' => env('KENCLOUD_API_KEY'),
'secret' => env('KENCLOUD_API_SECRET'),
],
'logging' => [
'enabled' => (bool) env('KENCLOUD_LOG', false),
'channel' => env('KENCLOUD_LOG_CHANNEL', 'stack'),
],
];
X-API-Key, X-API-Secret (endpoints Files)Authorization: Bearer <token> (Auth, API Keys, Admin)Via Facade
use KenCloud\Sdk\Facades\KenCloud;
$files = KenCloud::listFiles(['limit' => 10]);
$result = KenCloud::uploadFile(storage_path('app/document.pdf'), [
'original_name' => 'document.pdf',
]);
$fileId = $result['data']['id'] ?? null;
$file = KenCloud::getFile($fileId);
KenCloud::deleteFile($fileId);
Via Injection de dépendance
use KenCloud\Sdk\Http\Client as KenCloudClient;
class FilesController
{
public function __construct(private KenCloudClient $kencloud) {}
public function index()
{
return $this->kencloud->listFiles(['limit' => 10]);
}
}
Note: si l’API d’upload retourne un id, utilisez les méthodes basées sur id. Les méthodes UUID nécessitent des endpoints UUID.
$upload = KenCloud::uploadFile(
storage_path('app/photo.jpg'),
['original_name' => 'photo.jpg']
);
Backoff exponentiel sur 429/502/503/504, respecte Retry-After, configurable via retries.
Activez KENCLOUD_LOG=true. Les secrets sont masqués (API Key/Secret/Bearer).
Package officiel pour Flutter et applications Dart.
dependencies:
kencloud_flutter: ^1.0.0
Liste des fichiers
import 'package:http/http.dart' as http;
final uri = Uri.parse('https://cloud.kencode.dev/api/v1/files');
final res = await http.get(uri, headers: {
'X-API-Key': 'votre_api_key',
'X-API-Secret': 'votre_secret',
});
print(res.body);
Détails fichier
import 'package:http/http.dart' as http;
final fileUuid = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
final uri = Uri.parse('https://cloud.kencode.dev/api/v1/files/$fileUuid');
final res = await http.get(uri, headers: {
'X-API-Key': 'votre_api_key',
'X-API-Secret': 'votre_secret',
});
print(res.body);
Supprimer fichier
import 'package:http/http.dart' as http;
final fileUuid = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
final uri = Uri.parse('https://cloud.kencode.dev/api/v1/files/$fileUuid');
final res = await http.delete(uri, headers: {
'X-API-Key': 'votre_api_key',
'X-API-Secret': 'votre_secret',
});
print(res.body);
Les limites de taux sont appliquées par clé API pour éviter l'abus et garantir la disponibilité du service.
100
requêtes par heure
1000
requêtes par heure
200
requêtes par heure
Chaque réponse inclut des headers avec les informations de rate limiting :
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1640995200
L'API utilise des codes de statut HTTP standard et retourne des messages d'erreur détaillés en JSON.
Requête malformée ou paramètres manquants.
{
"status": "error",
"message": "The file field is required.",
"errors": {
"file": ["The file field is required."]
}
}
Clés API invalides ou manquantes.
{
"status": "error",
"message": "Invalid API credentials."
}
Quota dépassé ou accès refusé.
{
"status": "error",
"message": "Storage quota exceeded. Upgrade your plan to upload more files."
}
Fichier ou ressource non trouvé.
{
"status": "error",
"message": "File not found."
}
Rate limit dépassé.
{
"status": "error",
"message": "Rate limit exceeded. Try again in 3600 seconds."
}
Besoin d'aide ? Nous sommes là pour vous accompagner.