KenCloud API

Documentation API

Bienvenue dans la documentation de KenCloud API. Une API RESTful simple et puissante pour gérer vos fichiers dans le cloud.

Base URL

https://cloud.kencode.dev/api/v1

Authentification

L'authentification à l'API se fait via des clés API que vous pouvez générer depuis votre dashboard.

Headers requis

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".

Quick Start

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"

Liste des fichiers

GET /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"

Réponse

{
  "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"
    }
  ]
}

Upload fichier

POST /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"

Réponse

{
  "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"
  }
}

Détails fichier

GET /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"

Supprimer fichier

DELETE /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"

SDKs & Packages

JavaScript / Node.js

Coming Soon

Package officiel pour Node.js et navigateurs.

Installation (à venir)

npm install @kencloud/js-sdk

Python SDK

Python

Coming Soon

Package officiel pour Python 3.7+.

Installation (à venir)

pip install kencloud-python

PHP / Laravel SDK

PHP / Laravel

Disponible

SDK officiel pour PHP/Laravel. Auth API Key & Bearer, retries, logs, exceptions.

Installation

composer require kencloud/kencloud-api-php

Configuration (.env)

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

Exemple (Facade)

use KenCloud\Sdk\Facades\KenCloud;

$files = KenCloud::listFiles();
$upload = KenCloud::uploadFile(storage_path('app/document.pdf'));

KenCloud API PHP/Laravel SDK — Guide d’intégration détaillé

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.

1) Aperçu
  • Client HTTP Guzzle préconfiguré pour l’API KenCloud
  • 2 modes d’authentification: API Key (X-API-Key/X-API-Secret) et Bearer (Authorization)
  • Middleware d’auth: en-têtes ajoutés automatiquement
  • Retry auto 429/5xx (backoff exponentiel)
  • Journalisation PSR-3 (secrets masqués)
  • Exceptions personnalisées mappées aux statuts HTTP
2) Prérequis

PHP 8.2+, Laravel 10.x/11.x/12.x, Guzzle 7.9+/8.x

3) Installation
composer require kencloud/kencloud-api-php

Laravel détecte automatiquement le Service Provider et la Facade.

4) Configuration

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'),
  ],
];
5) Authentification
  • API Key: en-têtes X-API-Key, X-API-Secret (endpoints Files)
  • Bearer: Authorization: Bearer <token> (Auth, API Keys, Admin)
6) Utilisation dans Laravel

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]);
  }
}
7) API couverte et exemples
  • Auth: login, me, updateProfile, changePassword
  • Files: listFiles, uploadFile, get/update/delete par id ou uuid
  • API Keys: list/create/get/update/delete/regenerate
  • Admin: dashboard, analytics, systemHealth, users, updateUserQuota

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.

8) Upload (multipart)
$upload = KenCloud::uploadFile(
  storage_path('app/photo.jpg'),
  ['original_name' => 'photo.jpg']
);
9) Gestion des erreurs
  • AuthException (401/403)
  • StorageException (413)
  • QuotaException (429)
  • HttpException (autres 4xx/5xx)
10) Retry et robustesse

Backoff exponentiel sur 429/502/503/504, respecte Retry-After, configurable via retries.

11) Journalisation

Activez KENCLOUD_LOG=true. Les secrets sont masqués (API Key/Secret/Bearer).

12) Tests & intégration
  • Unitaires: Guzzle MockHandler
  • Intégration Files: upload, list, get, delete
13) Résolution de problèmes
  • 401/403: vérifier KENCLOUD_AUTH_TYPE et en-têtes envoyés
  • URL: utiliser https://cloud.kencode.dev/api/v1
  • UUID vs ID: adapter selon la réponse d’upload et endpoints exposés
14) Compatibilité & versioning
  • PHP: 8.2, 8.3, 8.4
  • Laravel: 10.x, 11.x
  • Guzzle: 7.9+, 8.x
  • Package: 1.0.0

Dart / Flutter SDK

Dart / Flutter

Coming Soon

Package officiel pour Flutter et applications Dart.

Installation (à venir)

dependencies:
  kencloud_flutter: ^1.0.0

Exemples (Dart, package:http)

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);

Rate Limits

Les limites de taux sont appliquées par clé API pour éviter l'abus et garantir la disponibilité du service.

Upload

100

requêtes par heure

Liste

1000

requêtes par heure

Suppression

200

requêtes par heure

Headers de réponse

Chaque réponse inclut des headers avec les informations de rate limiting :

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1640995200

Gestion d'erreurs

L'API utilise des codes de statut HTTP standard et retourne des messages d'erreur détaillés en JSON.

400 - Bad Request

Requête malformée ou paramètres manquants.

{
  "status": "error",
  "message": "The file field is required.",
  "errors": {
    "file": ["The file field is required."]
  }
}

401 - Unauthorized

Clés API invalides ou manquantes.

{
  "status": "error",
  "message": "Invalid API credentials."
}

403 - Forbidden

Quota dépassé ou accès refusé.

{
  "status": "error",
  "message": "Storage quota exceeded. Upgrade your plan to upload more files."
}

404 - Not Found

Fichier ou ressource non trouvé.

{
  "status": "error",
  "message": "File not found."
}

429 - Too Many Requests

Rate limit dépassé.

{
  "status": "error",
  "message": "Rate limit exceeded. Try again in 3600 seconds."
}

Support

Besoin d'aide ? Nous sommes là pour vous accompagner.

Email

Support technique par email

support@kencode.dev

Discord

Communauté et support en temps réel

Rejoindre le Discord

GitHub

Issues et contributions

GitHub Repository

Documentation

Guide complet et exemples

Cette page

Status Page

Surveillez l'état de l'API en temps réel.

Voir le statut