Démarrage
Créez une clé depuis votre profil.
Envoyez-la comme Bearer token.
Utilisez uniquement des URL HTTPS publiques pour les médias.
Authentification
Tous les endpoints publics documentés ici acceptent la même clé. Les ressources sont toujours limitées au propriétaire authentifié.
Authorization: Bearer qqm_live_REPLACE_WITH_YOUR_KEY
Content-Type: application/jsonGénération
/api/studio/generateGénère un PNG ou un MP4 hébergé et peut l’ajouter à Mes créations.
Limite spécifique : 20 requêtes par minute.
Mode rapide
Le mode quick couvre les paramètres courants sans envoyer un snapshot complet du Studio.
curl --request POST "https://www.quickquotemaker.com/api/studio/generate" \
--header "Authorization: Bearer qqm_live_REPLACE_WITH_YOUR_KEY" \
--header "Content-Type: application/json" \
--data '{
"mode": "quick",
"name": "Daily inspiration",
"quick": {
"text": "The future depends on what you do today.",
"author": "Mahatma Gandhi",
"ratio": "instagramPost",
"fontFamily": "Playfair Display",
"textColor": "#ffffff",
"align": "center",
"quoteMark": "curly",
"bold": true,
"background": {
"type": "gradient",
"from": "#0f172a",
"to": "#2563eb"
}
}
}'| Field | Required | Description |
|---|---|---|
| quick.text | Yes | 1–2,000 characters |
| quick.author | No | Up to 300 characters |
| quick.freeText | No | Up to 2,000 characters |
| quick.ratio | No | Any supported output ratio |
| quick.background | No | Solid, gradient, or public image |
| name | No | Name in My creations |
| record | No | Defaults to true |
Mode snapshot
Le mode snapshot accepte le design complet du Quote Studio : typographie distincte des trois textes, arrière-plan, filtres, overlay, bordure, ombres, boîtes de texte, transformations, positions et watermarks.
{
"mode": "snapshot",
"name": "Story campaign",
"design": {
"quote": "Build something worth sharing.",
"author": "QuickQuoteMaker",
"freeText": "@yourbrand",
"ratio": "tiktok",
"bgMode": "image",
"overlayOn": true,
"overlayColor": "#020617",
"overlayOpacity": 45,
"fontFamily": "Comfortaa",
"fontSize": 68,
"textColor": "#ffffff",
"align": "center",
"bold": true,
"watermarkTextOn": true,
"watermarkText": "quickquotemaker.com"
},
"backgroundUrl": "https://images.example.com/background.jpg",
"record": true
}backgroundUrl remplace l’image définie dans design. Les champs omis utilisent les valeurs par défaut normalisées du Studio.
Arrière-plan vidéo
Une URL vidéo HTTPS publique produit un MP4 silencieux avec le texte, les filtres, l’overlay, les watermarks et la bordure du Studio.
{
"mode": "snapshot",
"design": {
"quote": "Motion makes the message visible.",
"author": "QuickQuoteMaker",
"ratio": "instagramStory",
"bgMode": "video"
},
"videoUrl": "https://cdn.example.com/background.mp4",
"durationSeconds": 8,
"record": true
}- Vidéo source : 50 Mo maximum.
- Durée : de 2 à 15 secondes, 6 secondes par défaut.
- videoUrl remplace les autres arrière-plans.
- La sortie ne contient aucune piste audio.
Collections
/api/collectionsListe les métadonnées des collections.
/api/collectionsCrée une collection et retourne son identifiant.
/api/collections/{id}Retourne une collection avec toutes ses slides.
/api/collections/{id}Remplace le titre et/ou la liste complète des slides.
/api/collections/{id}Supprime définitivement une collection.
curl --request POST "https://www.quickquotemaker.com/api/collections" \
--header "Authorization: Bearer qqm_live_REPLACE_WITH_YOUR_KEY" \
--header "Content-Type: application/json" \
--data '{
"title": "Daily inspiration",
"slides": [{
"id": "slide-1",
"durationSeconds": 2.5,
"transition": "slide",
"design": {
"snapshot": {
"quote": "Begin with one clear step.",
"ratio": "tiktok"
},
"videoUrl": "https://cdn.example.com/background.mp4",
"posterUrl": "https://cdn.example.com/poster.jpg",
"startSeconds": 1.5,
"marker": false,
"bgMode": "video"
}
}]
}'- 60 slides maximum par collection.
durationSeconds: 1–30. Les valeurs fractionnaires sont acceptées, par exemple 2.5.transition:fade,slide,zoom,cut.design.bgMode:gradient,solid,image,video.- Fond vidéo : renseignez
design.videoUrletdesign.posterUrl. design.startSeconds: 0–3600. Décale le début du clip pour éviter une ouverture faible. Ignoré hors fond vidéo.design.marker: booléen. Marque une carte d’interruption (TOP 10, TOP 5) : son titre entre avec un zoom plus marqué que les autres slides.- Les titres sont uniques par utilisateur, sans distinction de casse ou d’espaces superflus.
- Un titre dupliqué retourne HTTP 409 avec collection_title_duplicate.
Référence
Formats disponibles
square 1080×1080portrait 1080×1350landscape 1200×675instagramPost 1080×1080instagramPortrait 1080×1440instagramStory 1440×2560instagramLandscape 1080×566tiktok 1080×1920tiktokSquare 1080×1080facebook 1440×1800facebookSquare 1440×1440facebookStory 1440×2560x 1920×1080xSquare 1080×1080pinterest 1000×1500pinterestSquare 1000×1000linkedinPost 1200×675linkedinSquare 1200×1200linkedinPortrait 720×900linkedinBanner 1584×396youtube 1080×1080youtubeBanner 2560×1440customRéponse de génération
{
"id": "f3f0ea51-086d-4bc2-8f63-5c63e73db902",
"url": "https://PROJECT.supabase.co/storage/v1/object/public/downloaded-images/ID.png",
"width": 1080,
"height": 1080,
"format": "PNG"
}Limitation globale
Les réponses limitées utilisent HTTP 429 et fournissent Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset.
| Point d’accès | Limite |
|---|---|
| POST /api/studio/generate | 20 / min |
| GET · POST /api/collections | 30 / min |
| GET · PATCH /api/collections/{id} | 60 / min |
| DELETE /api/collections/{id} | 30 / min |
Erreurs
| HTTP | Error | Meaning |
|---|---|---|
| 400 | invalid_request | Malformed JSON |
| 401 | unauthorized | Missing, invalid, revoked, or regenerated key |
| 404 | not_found | Resource absent or owned by another user |
| 409 | collection_title_duplicate | Collection title already used |
| 422 | invalid_payload | Validation failed |
| 422 | invalid_video | Unavailable, private, invalid, or oversized source |
| 429 | rate_limit_exceeded | Request limit reached |
| 500 | render_failed | Media rendering failed |
| 503 | not_configured | Service configuration unavailable |
En production, les réponses d’erreur ne contiennent que le champ error. Les détails internes (message, code et hint de la base de données) sont retirés et restent uniquement dans les journaux serveur.
Nouveautés
2026-08-26
Sécurité et limites détaillées
- Les réponses d’erreur ne divulguent plus de détails de base de données en production.
- Les limites de débit sont désormais documentées point d’accès par point d’accès.
- L’envoi vers la galerie exige une session et se limite désormais par utilisateur plutôt que par adresse IP.
- Les points d’accès d’authentification sont protégés contre la force brute et les sessions expirent après 8 heures.
2026-08-25
Collections plus sûres et export ZIP
- Le nouveau menu Emoji propose une bibliothèque d’icônes, d’emojis et de formes ajoutables, déplaçables et personnalisables sur le canvas.
- L’inspecteur Position et dimensions du canvas apparaît uniquement lorsqu’un objet est sélectionné.
- Les filigranes texte et social sont désormais modifiables directement sur le canvas, par double-clic ou avec le bouton crayon.
- Undo/redo dispose maintenant d’un historique complet de la session, navigable par étape, avec restauration des arrière-plans et raccourcis clavier.
- Quote Studio propose désormais grilles, règles, guides d’alignement, magnétisme, marges et largeur de texte personnalisables, ainsi qu’un inspecteur numérique X/Y/L/H.
- Le menu Format peut afficher les zones de sécurité et une simulation de l’interface pour chaque plateforme sociale, sans les inclure dans les exports.
- La citation, l’auteur et le texte libre sont modifiables directement sur le canvas du Quote Studio.
- Les titres de collection dupliqués sont refusés côté Studio et API.
- Le code d’erreur collection_title_duplicate est documenté.
- Quote Studio peut télécharger les slides d’une collection dans un ZIP de PNG ordonnés.
- Une confirmation précède désormais toute suppression depuis Quote Studio ou le profil.
2026-08-24
Collections vidéo
- Transitions fade, slide, zoom et cut.
- Durée de slide de 1 à 30 secondes et jusqu’à 60 slides.
- Génération d’images PNG et de vidéos MP4 avec arrière-plan distant.