v1119 endpoints · REST · JSON

Tout Quilly,
au bout d’une requête.

Notes, tâches, prompts, tableaux, Drive, partage : ce que fait l’application, une clé le fait aussi — en ton nom, avec tes droits, et sous tes yeux. Ce qu’un script écrit apparaît à l’instant sur tous tes appareils.

Base/api/v1

Démarrer

Trois gestes, et c’est parti

  1. 1

    Crée une clé

    Dans Mon compte → Clés API. Choisis lecture seule ou écriture, et une échéance si tu veux.

  2. 2

    Ajoute l’en-tête

    Authorization: Bearer aelby_sk_… sur chaque requête. Rien d’autre à configurer.

  3. 3

    Appelle /api/v1

    L’index dit à qui est la clé, ce qu’elle peut faire, et où est chaque ressource.

curl "/api/v1" \
  -H "Authorization: Bearer $QUILLY_API_KEY"

Clés et droits

Une clé agit en ton nom

Une requête de l’API voit exactement ce que tu vois dans l’application : tes notes, tes fichiers, mais aussi ce qu’on te partage — et rien de plus. Les mêmes règles s’appliquent, les mêmes partages, la même réserve. Une clé se révoque d’un geste dans Mon compte, et chacune garde le journal de ses appels.

Lecture seule

Lire, chercher, télécharger, remplir un prompt, corriger un texte. Idéale pour un tableau de bord ou un agent qui consulte.

Écriture

Tout ce que fait l’application : créer, modifier, ranger, partager, supprimer — 78 endpoints de plus.

La clé n’est jamais conservée en clair : seule son empreinte l’est. Garde-la hors de ton code (variable d’environnement), et jamais dans une page publique.

Réponses

Une enveloppe, toujours la même

On teste success, on lit data — ou error, dont le code est stable et le message fait pour être lu. meta.request_id (aussi dans l’en-tête X-Request-Id) retrouve une requête dans les journaux. Les listes se paginent avec limit et offset, et disent s’il en reste (has_more).

Réussite
{
  "success": true,
  "data": {
    "notes": [
      "…"
    ],
    "pagination": {
      "limit": 50,
      "offset": 0,
      "total": 128,
      "has_more": true
    }
  },
  "meta": {
    "request_id": "5f0c…",
    "timestamp": "2026-10-02T09:41:00.000Z"
  }
}
Erreur
{
  "success": false,
  "error": {
    "code": "validation_failed",
    "message": "« title » : 500 caractères maximum"
  },
  "meta": {
    "request_id": "9a41…",
    "timestamp": "2026-10-02T09:41:00.000Z"
  }
}

Erreurs

Des refus qui disent pourquoi

  • 401unauthorizedunauthorizedPas de clé dans l’en-tête Authorization
  • 401invalid_api_keyinvalid_api_keyClé inconnue
  • 401api_key_inactiveapi_key_inactiveClé révoquée
  • 401api_key_expiredapi_key_expiredClé expirée
  • 403insufficient_permissioninsufficient_permissionClé en lecture seule, sur une route qui écrit
  • 403forbiddenforbiddenAction non autorisée sur cet élément (partage en lecture…)
  • 404resource_not_foundresource_not_foundIntrouvable — ou hors de portée, c’est volontairement pareil
  • 409conflictconflictRefus avec une raison : quelqu’un écrit, partage refusé… (details.reason)
  • 413payload_too_largepayload_too_largeTrop lourd pour cet appel
  • 422validation_failedvalidation_failedUn champ ne convient pas — le message le nomme
  • 400invalid_requestinvalid_requestCorps illisible, ou action refusée par la base
  • 429rate_limit_exceededrate_limit_exceededTrop de requêtes : voir l’en-tête Retry-After
  • 507insufficient_storageinsufficient_storageLa réserve ne suffit pas (details.verdict)
  • 503not_configurednot_configuredUn service n’est pas configuré sur ce serveur
  • 502upstream_errorupstream_errorUn service tiers (stockage, IA) n’a pas répondu
  • 500internal_errorinternal_errorErreur interne — meta.request_id aide à la retrouver

Limites

De la marge, et des garde-fous

240 / min

par clé. Au-delà, 429 et l’en-tête Retry-After dit quand revenir.

4 Mo

pour un fichier envoyé d’un seul appel. Au-delà, l’envoi en trois temps, sans limite pratique.

CORS ouvert

l’API s’appelle depuis n’importe quelle origine : elle ne lit aucun cookie, seulement la clé.

Version 1.0.0. Les codes d’erreur et la forme des réponses sont stables au sein de la v1.

Compte3

Qui parle, avec quels droits, et combien de place reste.

Notes15

Écrire, ranger, retrouver. En HTML, en Markdown ou en texte brut.

Dossiers

Tâches16

Des listes, une échelle de catégories, et la coche qui suit partout — jusque dans Aelby Week.

Listes

Catégories

Prompts14

La bibliothèque, ses variables {{…}}, ses blocs, ses versions — et le remplissage, côté serveur.

Dossiers

Tableaux17

La toile sans bords : cartes, grilles, médias, formes, liens — et l’app entière, vivante, posée dessus.

Éléments

Liens

Dossiers

Drive20

Fichiers et notes rapides, rangés en dossiers — partagés ou non. Les octets ne passent jamais par nous pour les gros envois.

Envoi en trois temps

Dossiers

Dossiers partagés

Partage & contacts22

Des liens qui marchent pendant l’envoi, des contacts, et des objets ouverts à plusieurs.

Liens de partage

Contacts

Objets partagés

Post-its5

Le mur de papiers colorés.

Atelier & dictées5

La feuille d’assemblage, et l’historique de la dictée express.

Outils2

Chercher partout, corriger sans reformuler.