Les endpoints REST réels exposés par l'API MasterOS, organisés par ressource, sous le préfixe /v1.
Ce sont les endpoints réels, aujourd'hui
Cette référence documente l'API exactement telle qu'elle est implémentée en ce moment. Elle est écrite à la main,
pas générée à partir de la véritable spécification OpenAPI de l'API (voir Versioning
pour savoir où se trouve réellement cette spécification) — surveillez le Changelog pour les écarts
entre les deux.
Tous les endpoints sont relatifs à l'URL de base de l'API, sous un préfixe /v1 (voir
Versioning). Tous les endpoints authentifiés utilisent un cookie de session httpOnly
défini par POST /v1/auth/verify-login-code — il n'existe pas encore d'authentification par clé API séparée aujourd'hui (voir
Authentication).
auth
| Method | Path | Auth | Notes |
|---|
| POST | /v1/auth/request-login-code | — | { email }. Envoie par email un code à 6 chiffres et crée le compte à la première utilisation ; renvoie toujours le même message. Limité en fréquence par IP et par email de façon indépendante. |
| POST | /v1/auth/verify-login-code | — | { email, code }. Définit le cookie de session. Limité en fréquence par IP et par email de façon indépendante. |
| POST | /v1/auth/logout | session | Efface le cookie de session. |
| GET | /v1/auth/me | session | Renvoie l'utilisateur actuel. |
| GET | /v1/auth/google | — | Redirige vers Google OAuth. |
| GET | /v1/auth/google/callback | — | Callback OAuth ; redirige vers l'application en cas de succès. |
| GET | /v1/auth/facebook | — | Redirige vers Facebook OAuth. |
| GET | /v1/auth/facebook/callback | — | Callback OAuth ; redirige vers l'application en cas de succès. |
| POST | /v1/auth/forgot-password | — | { email }. Renvoie toujours le même message, que l'email soit enregistré ou non. |
| POST | /v1/auth/reset-password | — | { token, password }. Le token est à usage unique et expire. |
chat
| Method | Path | Auth | Notes |
|---|
| POST | /v1/chat | session | { model, messages, conversationId?, idempotencyKey }. Diffuse un corps de réponse en texte brut ; l'en-tête x-conversation-id de la réponse porte l'identifiant de conversation. idempotencyKey est obligatoire — une requête retentée avec la même clé ne facture jamais deux fois ni ne rappelle jamais le prestataire. |
skills
| Method | Path | Auth | Notes |
|---|
| POST | /v1/skills | session | { name, instruction, input_schema?, output_schema? }. Crée une Skill privée à votre compte. |
| GET | /v1/skills | session | Liste vos propres Skills. |
| GET | /v1/skills/templates | session | Liste les modèles de départ que vous pouvez dupliquer dans votre propre Skill. |
| POST | /v1/skills/templates/:id/duplicate | session | Copie un modèle dans une nouvelle Skill vous appartenant. |
| POST | /v1/skills/import | session | { name, instruction, input_schema?, output_schema?, version? } — exactement la forme que produit GET /v1/skills/:id/export, afin que export → import fasse un aller-retour. Tout autre champ (id, owner_id, organization_id, allowed_tools) est rejeté d'emblée ; une Skill importée ne conserve jamais de liaison d'outil provenant du fichier. |
| GET | /v1/skills/:id | session | Une Skill que vous possédez, avec toutes ses versions. |
| GET | /v1/skills/:id/export | session | La forme portable { name, instruction, input_schema, output_schema, version }, correspondant à l'entrée de l'endpoint d'import. |
| POST | /v1/skills/:id/versions | session | { instruction, input_schema?, output_schema? }. Publie une nouvelle version immuable. |
| POST | /v1/skills/:id/run | session | { model, input, conversationId?, idempotencyKey }. Rentre dans exactement le même pipeline de chat que POST /v1/chat, avec input tenant lieu du message unique de l'utilisateur — même comportement d'idempotence/quota/ledger. |
conversations
| Method | Path | Auth | Notes |
|---|
| GET | /v1/conversations | session | Liste vos propres conversations. |
| GET | /v1/conversations/:id | session | Une conversation unique avec ses messages. Renvoie 404 pour une conversation que vous ne possédez pas. |
files
| Method | Path | Auth | Notes |
|---|
| GET | /v1/files | session | Liste vos propres fichiers téléversés. |
| POST | /v1/files | session | Téléversement multipart, nom de champ file. Accepte le texte brut, Markdown, PDF, et .docx, jusqu'à 20 Mo. |
| DELETE | /v1/files/:id | session | Supprime un fichier que vous possédez (objet de stockage + enregistrement). |
plans
| Method | Path | Auth | Notes |
|---|
| GET | /v1/plans | — (public) | Liste les plans avec leurs tarifs et modèles autorisés — volontairement public afin que les tarifs soient visibles avant la connexion. |
billing
| Method | Path | Auth | Notes |
|---|
| POST | /v1/billing/checkout | session | { planId, provider: "sepay" | "paddle" }. Le montant facturé provient toujours de la consultation du plan côté serveur, jamais du client. Les plans Free et Enterprise ne peuvent pas passer par ce checkout. |
| GET | /v1/billing/quota | session | Votre limite de quota quotidien actuelle et le solde restant. |
Deux ressources supplémentaires existent dans l'API en production mais ne sont pas documentées ici comme surface
orientée client : /v1/webhooks/* (entrant uniquement, appelé par SePay/Paddle — pas quelque chose que vous appelez
vous-même) et /v1/admin/* (interne, réservé aux admins).