API Générateur de QR Codes

Générez des QR codes personnalisés (PNG/JPG/SVG) avec des formes, des couleurs par œil, des logos et des cadres promotionnels.

Que pouvez-vous faire ?
Formes et couleurs personnalisées

Modules point/carré + yeux circulaires/carrés, avec des couleurs par œil.

Logos centraux

Placez un logo au centre (téléchargement ou prédéfini comme "scan-me").

Cadres promotionnels

Bannière inférieure, en-tête supérieur, bulle de dialogue, ruban, badge.

Sauvegarde et prêt pour CDN

Stockez sur disque et obtenez une URL publique instantanément.

Essayer en direct
99.9 % Disponibilité
Réponse
20 req/s
0.01 Crédits / requête

Generate QR Code

POST https://api.yeb.to/v1/qr-code/generate
Parameter Type Req Description
api_keystringyesYour API key.
typestringyespage (Page Builder payload).
actionstringoptgenerate (default).
image_formatstringoptSVG (default) | PNG | JPG
image_widthintoptTarget width in px (default 500 for raster).
foreground_colorhexoptDefault #000000.
background_colorhexoptDefault #FFFFFF.
body_stylestringoptsquare (default) | dot — PNG/JPG only.
eye_stylestringoptsquare (default) | circle — PNG/JPG only.
eye_outer_color / eye_inner_colorhexoptGlobal per-eye colors; can be overridden per eye with eye1_*, eye2_*, eye3_*.
eye1_outer_color / eye1_inner_colorhexoptTop-left eye colors.
eye2_outer_color / eye2_inner_colorhexoptTop-right eye colors.
eye3_outer_color / eye3_inner_colorhexoptBottom-left eye colors.
qr_code_logostringoptno-logo (default) | scan-me | scan-me-square | upload
logo_path / logo_data_base64stringoptProvide when qr_code_logo=upload.
frame_namestringoptno-frame (default) | bottom-banner | top-header | speech-bubble | ribbon-tag | badge
frame_colorhexoptDefault #000000.
frame_text / frame_text_colorstring/hexopt“Scan me”, “Rate us”, etc.; default text color #FFFFFF.
frame_icon_namestringoptIcon file name (resolved via config('qr.icons_path')).
download0|1optIf 1, controller triggers download flow.
save0|1optWhen 1, image is saved and file_url/file_path are returned.
storage_disk / storage_folder / filename / filename_basestringoptApplied when save=1. In UI използваме filename_base.
include_bytes0|1optInclude base64 data URI in response (default 1; if save=1, default 0).
When type=page, pass:
page.versionintyesSchema version (UI използва 1).
page.theme.primary / page.theme.accenthexoptLanding theme colors.
page.layout.cols / page.layout.gapintoptGrid columns (desktop-only) and gap in px.
page.layout.sections.*objectoptenabled, collapsible, default_open, style (card|plain), radius, border, background.
page.blocks[]arrayyesList of blocks: { type, props, children }. Поддържани: hero, gallery, appBadges, video, mp3, pdf, socialLinks, event, coupon, rating, feedback, vcardPlus, text, button, spacer, divider.
curl -X POST https://api.yeb.to/v1/qr-code/generate \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","type":"page","action":"generate","image_format":"PNG","image_width":600,"foreground_color":"#111111","background_color":"#FFFFFF","body_style":"dot","eye_style":"circle","eye_outer_color":"#111111","eye_inner_color":"#111111","eye1_inner_color":"#FF4D4D","eye2_inner_color":"#FFB84D","eye3_inner_color":"#4DD2FF","qr_code_logo":"scan-me","frame_name":"bottom-banner","frame_color":"#111111","frame_text":"Scan me","frame_text_color":"#FFFFFF","frame_icon_name":"qr","save":1,"storage_disk":"public","storage_folder":"qr_codes","filename_base":"menu-q1","include_bytes":0,"page":{"version":1,"theme":{"primary":"#0ea5e9","accent":"#111111"},"layout":{"cols":2,"gap":12,"sections":{"enabled":false,"collapsible":false,"default_open":true,"style":"card","radius":12,"border":"1px solid rgba(255,255,255,.12)","background":"rgba(255,255,255,.03)"}},"blocks":[{"type":"hero","props":{"headline":"Winter Lookbook","description":"Short intro…","align":"center","cta":{"label":"SHOP NOW","href":"https://example.com"}}},{"type":"gallery","props":{"scroll":"horizontal","images":[{"url":"https://picsum.photos/seed/a/600/400"},{"url":"https://picsum.photos/seed/b/600/400"}]}},{"type":"button","props":{"label":"Open site","href":"https://yeb.to","variant":"primary","align":"center"}}]}}'
$payload = {
    "api_key": "YOUR_KEY",
    "type": "page",
    "action": "generate",
    "image_format": "PNG",
    "image_width": 600,
    "foreground_color": "#111111",
    "background_color": "#FFFFFF",
    "body_style": "dot",
    "eye_style": "circle",
    "eye_outer_color": "#111111",
    "eye_inner_color": "#111111",
    "eye1_inner_color": "#FF4D4D",
    "eye2_inner_color": "#FFB84D",
    "eye3_inner_color": "#4DD2FF",
    "qr_code_logo": "scan-me",
    "frame_name": "bottom-banner",
    "frame_color": "#111111",
    "frame_text": "Scan me",
    "frame_text_color": "#FFFFFF",
    "frame_icon_name": "qr",
    "save": 1,
    "storage_disk": "public",
    "storage_folder": "qr_codes",
    "filename_base": "menu-q1",
    "include_bytes": 0,
    "page": {
        "version": 1,
        "theme": {
            "primary": "#0ea5e9",
            "accent": "#111111"
        },
        "layout": {
            "cols": 2,
            "gap": 12,
            "sections": {
                "enabled": false,
                "collapsible": false,
                "default_open": true,
                "style": "card",
                "radius": 12,
                "border": "1px solid rgba(255,255,255,.12)",
                "background": "rgba(255,255,255,.03)"
            }
        },
        "blocks": [
            {
                "type": "hero",
                "props": {
                    "headline": "Winter Lookbook",
                    "description": "Short intro…",
                    "align": "center",
                    "cta": {
                        "label": "SHOP NOW",
                        "href": "https://example.com"
                    }
                }
            },
            {
                "type": "gallery",
                "props": {
                    "scroll": "horizontal",
                    "images": [
                        {
                            "url": "https://picsum.photos/seed/a/600/400"
                        },
                        {
                            "url": "https://picsum.photos/seed/b/600/400"
                        }
                    ]
                }
            },
            {
                "type": "button",
                "props": {
                    "label": "Open site",
                    "href": "https://yeb.to",
                    "variant": "primary",
                    "align": "center"
                }
            }
        ]
    }
};
$r = Http::post('https://api.yeb.to/v1/qr-code/generate', $payload);
print_r($r->json());
fetch('https://api.yeb.to/v1/qr-code/generate', {
  method: 'POST',
  headers: {'Content-Type':'application/json'},
  body: JSON.stringify({"api_key":"YOUR_KEY","type":"page","action":"generate","image_format":"PNG","image_width":600,"foreground_color":"#111111","background_color":"#FFFFFF","body_style":"dot","eye_style":"circle","eye_outer_color":"#111111","eye_inner_color":"#111111","eye1_inner_color":"#FF4D4D","eye2_inner_color":"#FFB84D","eye3_inner_color":"#4DD2FF","qr_code_logo":"scan-me","frame_name":"bottom-banner","frame_color":"#111111","frame_text":"Scan me","frame_text_color":"#FFFFFF","frame_icon_name":"qr","save":1,"storage_disk":"public","storage_folder":"qr_codes","filename_base":"menu-q1","include_bytes":0,"page":{"version":1,"theme":{"primary":"#0ea5e9","accent":"#111111"},"layout":{"cols":2,"gap":12,"sections":{"enabled":false,"collapsible":false,"default_open":true,"style":"card","radius":12,"border":"1px solid rgba(255,255,255,.12)","background":"rgba(255,255,255,.03)"}},"blocks":[{"type":"hero","props":{"headline":"Winter Lookbook","description":"Short intro…","align":"center","cta":{"label":"SHOP NOW","href":"https://example.com"}}},{"type":"gallery","props":{"scroll":"horizontal","images":[{"url":"https://picsum.photos/seed/a/600/400"},{"url":"https://picsum.photos/seed/b/600/400"}]}},{"type":"button","props":{"label":"Open site","href":"https://yeb.to","variant":"primary","align":"center"}}]}})
}).then(r => r.json()).then(console.log);
import requests, json
payload = {
    "api_key": "YOUR_KEY",
    "type": "page",
    "action": "generate",
    "image_format": "PNG",
    "image_width": 600,
    "foreground_color": "#111111",
    "background_color": "#FFFFFF",
    "body_style": "dot",
    "eye_style": "circle",
    "eye_outer_color": "#111111",
    "eye_inner_color": "#111111",
    "eye1_inner_color": "#FF4D4D",
    "eye2_inner_color": "#FFB84D",
    "eye3_inner_color": "#4DD2FF",
    "qr_code_logo": "scan-me",
    "frame_name": "bottom-banner",
    "frame_color": "#111111",
    "frame_text": "Scan me",
    "frame_text_color": "#FFFFFF",
    "frame_icon_name": "qr",
    "save": 1,
    "storage_disk": "public",
    "storage_folder": "qr_codes",
    "filename_base": "menu-q1",
    "include_bytes": 0,
    "page": {
        "version": 1,
        "theme": {
            "primary": "#0ea5e9",
            "accent": "#111111"
        },
        "layout": {
            "cols": 2,
            "gap": 12,
            "sections": {
                "enabled": false,
                "collapsible": false,
                "default_open": true,
                "style": "card",
                "radius": 12,
                "border": "1px solid rgba(255,255,255,.12)",
                "background": "rgba(255,255,255,.03)"
            }
        },
        "blocks": [
            {
                "type": "hero",
                "props": {
                    "headline": "Winter Lookbook",
                    "description": "Short intro…",
                    "align": "center",
                    "cta": {
                        "label": "SHOP NOW",
                        "href": "https://example.com"
                    }
                }
            },
            {
                "type": "gallery",
                "props": {
                    "scroll": "horizontal",
                    "images": [
                        {
                            "url": "https://picsum.photos/seed/a/600/400"
                        },
                        {
                            "url": "https://picsum.photos/seed/b/600/400"
                        }
                    ]
                }
            },
            {
                "type": "button",
                "props": {
                    "label": "Open site",
                    "href": "https://yeb.to",
                    "variant": "primary",
                    "align": "center"
                }
            }
        ]
    }
}
        r = requests.post('https://api.yeb.to/v1/qr-code/generate', headers={'Content-Type':'application/json'}, data=json.dumps(payload))
print(r.json())

Response Example

{
  "mime": "image/png",
  "ext": "png",
  "width": 720,
  "height": 880,
  "saved": true,
  "file_url": "https://cdn.your-site/qr_codes/2025/08/21/qr-...png",
  "file_path": "qr_codes/2025/08/21/qr-...png",
  "scan_url": "https://yeb.to/s/abc123",
  "meta": {
    "format": "PNG",
    "logo": "scan-me",
    "shape": { "body":"dot", "eye":"circle" },
    "colors": {
      "foreground":"#111111","background":"#FFFFFF",
      "eye_outer":"#111111","eye_inner":"#111111",
      "eye1_inner":"#FF4D4D","eye2_inner":"#FFB84D","eye3_inner":"#4DD2FF"
    },
    "frame": { "name":"bottom-banner","color":"#111111","text":"Scan me","textColor":"#FFFFFF","icon":"qr" },
    "download": false,
    "saved": true,
    "type": "page",
    "page": { "version": 1 }
  },
  "data_base64": null
}
{
  "error": "Validation failed: page.blocks is required for type=page",
  "code": 422
}

Codes de réponse

CodeDescription
200 SuccessRequête traitée avec succès.
400 Bad RequestValidation d'entrée échouée.
401 UnauthorizedClé API manquante ou incorrecte.
403 ForbiddenClé inactive ou non autorisée.
429 Rate LimitTrop de requêtes.
500 Server ErrorErreur inattendue.

qr-code/generate

qr-code/generate 0.0100 credits

Parameters

API Key
body · string · required
Type
body · string · required
Action
body · string
Image Format
body · string
Image Width
body · string
Foreground Color
body · string
Background Color
body · string
Body Style
body · string
Eye Style
body · string
Eye Outer Color
body · string
Eye Inner Color
body · string
Eye1 Outer Color
body · string
Eye1 Inner Color
body · string
Eye2 Outer Color
body · string
Eye2 Inner Color
body · string
Eye3 Outer Color
body · string
Eye3 Inner Color
body · string
Logo Mode
body · string
Logo Path
body · string
Logo Data (base64)
body · string
Frame
body · string
Frame Color
body · string
Frame Text
body · string
Frame Text Color
body · string
Frame Icon
body · string
Download
body · string
Save
body · string
Storage Disk
body · string
Storage Folder
body · string
Filename
body · string
Filename Base
body · string
Include Base64
body · string
Page Version
body · string · required
Theme Primary
body · string
Theme Accent
body · string
Layout Cols
body · string
Layout Gap
body · string
Sections Enabled
body · string
Sections Collapsible
body · string
Sections Default Open
body · string
Sections Style
body · string
Sections Radius
body · string
Sections Border
body · string
Sections Background
body · string
Blocks
body · string · required

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

API Générateur de QR Codes — Practical Guide

Create branded QR codes, auto-build mobile pages (“experiences”), and track scans & custom events. Use this guide to ship working QR flows fast — with the right format, styling, storage, and analytics.

#What this API solves

Most QR projects fail on the details: wrong format for print, unreadable colors, no landing, zero tracking. Our suite covers the full funnel: image generationmobile page (“experience”)scan/event logging.

#Endpoints & when to use them

#POST /v1/qr-code/generate — Render a QR image

  • Best for: You already have a target URL/text and only need an image (SVG/PNG/JPG).
  • Inputs: qr_code_text + styling (colors, eye/body styles, logo, frame), output controls (save, download, include_bytes).
  • Output: mime, ext, width/height, file_url/file_path (when saved), optional data_base64, plus a meta map describing styling.
  • Format tip: Use SVG for print (infinite scale). Use PNG with frames/logos for digital flyers.

#POST /v1/qr-experience/generate — Create a mobile “experience” + QR

  • Best for: No website? Need a campaign page? Pass type and content; we build the page and generate the QR pointing to it.
  • Types: page (Page Builder JSON), url, text, rating, mp3, pdf, social, images, app, videos, event (with calendar), coupon, feedback, vcard_plus.
  • Output: scan_url (public), experience (id/code/type/title), and the same QR image payload as the generator.
  • Why it matters: You control the full UX post-scan, can update content later, and track scans + custom actions.

#POST /v1/qr-scan/scan — Log a scan

  • Best for: Server-side logging when your scan route is hit (we also auto-log from our hosted routes).
  • Identify experience via: experience_id or pair type + code.
  • Output: ok, experience_id, code, type.

#POST /v1/qr-scan/event — Log a custom event

  • Best for: Button clicks (cta_click), ratings submitted, downloads, etc., tied back to an experience.
  • Inputs: experience (id or type+code), event (string), optional value, optional meta.
  • Output: ok.

#Quick start

# 1) Plain QR image (SVG; best for print)
curl -sX POST "https://api.yeb.to/v1/qr-code/generate" \
 -H "Accept: application/json" -H "Content-Type: application/json" \
 -d '{ "api_key":"<YOUR_KEY>", "qr_code_text":"https://example.com/summer-menu", "image_format":"SVG" }'
# 2) Experience page + QR (gallery landing with CTA)
curl -sX POST "https://api.yeb.to/v1/qr-experience/generate" \
 -H "Accept: application/json" -H "Content-Type: application/json" \
 -d '{ "api_key":"<YOUR_KEY>", "type":"page",
       "page":{ "version":1, "theme":{"primary":"#0ea5e9","accent":"#111111"},
         "layout":{"cols":2,"gap":12},
         "blocks":[
           {"type":"hero","props":{"headline":"Winter Lookbook","description":"Short intro…","align":"center",
              "cta":{"label":"SHOP NOW","href":"https://example.com"}}},
           {"type":"gallery","props":{"scroll":"horizontal","images":[
              {"url":"https://picsum.photos/seed/a/600/400"},{"url":"https://picsum.photos/seed/b/600/400"}]}},
           {"type":"button","props":{"label":"Open site","href":"https://yeb.to","variant":"primary","align":"center"}}
         ]},
       "image_format":"PNG","image_width":600,
       "qr_code_logo":"scan-me","frame_name":"bottom-banner","frame_text":"Scan me",
       "save":1,"storage_disk":"public","storage_folder":"qr_codes","filename_base":"winter-lookbook" }'
# 3) Log a custom event (CTA click)
curl -sX POST "https://api.yeb.to/v1/qr-scan/event" \
 -H "Accept: application/json" -H "Content-Type: application/json" \
 -d '{ "api_key":"<YOUR_KEY>", "type":"page", "code":"<experience_code>",
       "event":"cta_click", "value":"shop_now", "meta":{"source":"landing"}}'

#Full “everything on” request (covers most options)

Use this to see how fields combine. Trim what you don’t need.

POST /v1/qr-experience/generate
{
  "api_key": "YOUR_KEY",
  "type": "page",

  "image_format": "PNG",
  "image_width": 720,
  "foreground_color": "#111111",
  "background_color": "#FFFFFF",

  "body_style": "dot",
  "eye_style":  "circle",
  "eye_outer_color": "#111111",
  "eye_inner_color": "#111111",
  "eye1_outer_color": "#111111",
  "eye1_inner_color": "#FF4D4D",
  "eye2_outer_color": "#111111",
  "eye2_inner_color": "#FFB84D",
  "eye3_outer_color": "#111111",
  "eye3_inner_color": "#4DD2FF",

  "qr_code_logo": "scan-me",
  "frame_name": "bottom-banner",
  "frame_color": "#111111",
  "frame_text": "Scan me",
  "frame_text_color": "#FFFFFF",
  "frame_icon_name": "qr",

  "save": 1,
  "download": 0,
  "include_bytes": 0,
  "storage_disk": "public",
  "storage_folder": "qr_codes",
  "filename_base": "campaign-q1",

  "page": {
    "version": 1,
    "theme": { "primary": "#0ea5e9", "accent": "#111111" },
    "layout": {
      "cols": 2, "gap": 12,
      "sections": { "enabled": false, "collapsible": false, "default_open": true,
        "style": "card", "radius": 12, "border": "1px solid rgba(255,255,255,.12)", "background": "rgba(255,255,255,.03)" }
    },
    "blocks": [
      { "type": "hero", "props": { "headline": "Winter Lookbook", "description": "Short intro…", "align": "center",
          "cta": { "label": "SHOP NOW", "href": "https://example.com?utm_source=qr&utm_campaign=winter" } } },
      { "type": "gallery", "props": { "scroll": "horizontal", "images": [
          { "url": "https://picsum.photos/seed/a/600/400" }, { "url": "https://picsum.photos/seed/b/600/400" } ] } },
      { "type": "video", "props": { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" } },
      { "type": "pdf",   "props": { "url": "https://example.com/catalog.pdf", "title": "Catalog" } },
      { "type": "appBadges", "props": { "ios":"https://apps.apple.com/app/id000000", "android":"https://play.google.com/store/apps/details?id=app" } },
      { "type": "socialLinks", "props": { "items":[
          {"name":"Instagram","url":"https://instagram.com/brand"},{"name":"TikTok","url":"https://tiktok.com/@brand"} ] } },
      { "type": "button", "props": { "label":"Open site", "href":"https://yeb.to", "variant":"primary", "align":"center" } }
    ]
  }
}

#Parameters that actually matter

Image generation

ParamTypeRequiredWhy it matters
qr_code_textstringYes (generator)The content to encode. For experiences we auto-use scan_url.
image_formatSVG|PNG|JPGNoSVG for print; PNG for most branded/all-color cases; JPG is smallest but lossy.
foreground_color/background_color#RRGGBBNoEnsure 40%+ contrast. Avoid light-on-light; scanners fail.
body_style/eye_stylestringNo“dot” body + “circle” eyes feels modern; keep eyes visible for reliability.
qr_code_logoenumNo“scan-me” boosts intent. For uploads, ensure 15–20% center area only.
frame_name + text/iconenumNoFrames add CTA without redesigning posters; great for flyers/menus.
save/download/include_bytes0|1Nosave=1 returns file_url. download=1 triggers file response; we auto-force bytes. Default bytes: 1, but 0 if save=1 to keep payloads light.

Experience generation

ParamTypeRequiredPractical guidance
typeenumYesPick the smallest that solves your flow. page is the most flexible.
page.versionintYes (page)Schema version; current UI uses 1.
page.blocks[]arrayYes (page)Hero, gallery, video, mp3, pdf, socialLinks, event, coupon, rating, feedback, vcardPlus, text, button, spacer, divider.
event.*mixedYes (event)Automatically generates an .ics file; perfect for meetups/concerts.
vcard_plus.*mixedYes (vcard_plus)Generates a downloadable .vcf and optional photo avatar.

Scan & events

ParamTypeRequiredNotes
experience_id OR type+codeint / stringYesEither pass the numeric id or the pair; avoid both.
eventstringYes (for /event)Example: cta_click, rating_submitted, download.
valuestring|numberNoOptional payload (e.g., rating value, button id).
metaobjectNoExtra attribution (campaign, placement). IP/UA/referrer are auto-recorded server-side.

#Reading & acting on responses

QR image (generator)

{
  "mime":"image/png","ext":"png","width":720,"height":880,
  "saved":true,"file_url":"https://cdn.your-site/qr_codes/2025/08/21/qr-...png",
  "file_path":"qr_codes/2025/08/21/qr-...png",
  "meta":{"format":"PNG","logo":"scan-me","shape":{"body":"dot","eye":"circle"}},
  "data_base64": null
}
  • Store file_url for reuse. Keep meta if you render previews.
  • Large payloads? Set include_bytes=0 and rely on CDN URLs.

Experience + QR

{
  "scan_url":"https://yeb.to/s/abc123",
  "experience":{"id":1902,"code":"abc123","type":"page","title":"Winter Lookbook"},
  "mime":"image/png","ext":"png","width":720,"height":880,
  "saved":true,"file_url":"https://.../qr_codes/.../campaign-q1.png",
  "meta":{ "...": "..." }, "data_base64": null
}
  • scan_url is the URL to print/embed into any QR.
  • Use qr-scan/event to track CTA clicks (e.g., “Get tickets”).

#Practical recipes

  • Print-ready assets: Prefer SVG. Keep a 4-module quiet zone; test from 30–50 cm.
  • Brand triad: Per-eye inner colors (eye1/2/3_inner_color) for brand palettes without hurting readability.
  • Events/RSVP: type=event auto-generates .ics; add a CTA to a ticketing URL.
  • vCard at conferences: type=vcard_plus produces a downloadable contact card + avatar.
  • Attribution: Append ?utm_source=qr to external links inside page blocks; also log /event on click.

#Errors & safeguards

  • 422 — Validation (e.g., page.blocks missing for type=page).
  • 404 — Experience not found (wrong type/code pair).
  • 410 — Experience inactive/expired.
  • download=1 forces raw bytes; prefer save=1 + CDN for production.

#API Changelog (QR Suite)

2025-11-05
Kitchen-sink request sample. Added full example covering most qr-experience/generate and QR styling options.
2025-11-03
Event & Feedback upgrades. event now supports cover images; feedback adds display=wizard and cover support.
2025-11-02
Scan logging API. Exposed /v1/qr-scan/scan and /v1/qr-scan/event for server-side tracking with IP/UA/referrer capture.
2025-10-28
Output payload hardening. include_bytes defaults to 0 when save=1; frames and logos documented in meta.
2025-10-20
Experiences v1. Added Page Builder (type=page) with blocks (hero, gallery, video, mp3, pdf, socialLinks, event, coupon, rating, feedback, vcardPlus, text, button, spacer, divider).

Use the endpoint playgrounds on this page to test payloads and lock in your defaults (format, logo/frame, storage path).

Questions fréquemment posées

SVG est idéal pour l'impression et les écrans haute résolution (vectoriel). PNG/JPG sont raster ; utilisez-les quand vous avez besoin de formes personnalisées, couleurs par œil ou cadres.

Utilisez des modules sombres sur fond clair, gardez un bon contraste, évitez les images chargées derrière le code et ne dépassez pas ~25–30 % de taille du logo.

Nous utilisons Élevé (H), environ ~30 % de tolérance aux dommages dans des conditions idéales.

Oui, 4 modules de marge autour du QR sont appliqués.

Les cadres sont appliqués aux sorties raster (PNG/JPG). SVG utilise uniquement le QR de base.

Hex #RRGGBB. Les valeurs invalides reviennent à #000000.

Sur le disque Laravel configuré (par défaut public) sous {folder}/YYYY/MM/DD. L'API retourne file_url et file_path.

Quand include_bytes=1, nous retournons une chaîne Data URI (ex. : data:image/png;base64,...) pour une intégration directe.

Oui. Chaque requête, même celles qui entraînent des erreurs, consomme des crédits. Vos crédits sont liés au nombre de requêtes, indépendamment du succès ou de l'échec. Si l'erreur est clairement due à un problème de plateforme de notre côté, nous restaurerons les crédits affectés (pas de remboursement en espèces).

Contactez-nous à [email protected]. Nous prenons les retours au sérieux—si votre rapport de bug ou demande de fonctionnalité est pertinent, nous pouvons corriger ou améliorer l'API rapidement et vous accorder 50 crédits gratuits en guise de remerciement.

Cela dépend de l'API et parfois même du endpoint. Certains endpoints utilisent des données de sources externes, qui peuvent avoir des limites plus strictes. Nous imposons également des limites pour prévenir les abus et maintenir la stabilité de notre plateforme. Consultez la documentation pour la limite spécifique de chaque endpoint.

Nous fonctionnons avec un système de crédits. Les crédits sont des unités prépayées et non remboursables que vous dépensez pour les appels API et les outils. Les crédits sont consommés en FIFO (les plus anciens en premier) et sont valables 12 mois à compter de la date d'achat. Le tableau de bord affiche chaque date d'achat et son expiration.

Oui. Tous les crédits achetés (y compris les soldes fractionnaires) sont valables 12 mois à compter de l'achat. Les crédits inutilisés expirent automatiquement et sont définitivement supprimés à la fin de la période de validité. Les crédits expirés ne peuvent être restaurés ni convertis en espèces ou autre valeur. Règle transitoire : les crédits achetés avant le 22 sept. 2025 sont traités comme achetés le 22 sept. 2025 et expirent le 22 sept. 2026 (sauf si une expiration antérieure a été indiquée lors de l'achat).

Oui—dans leur période de validité. Les crédits inutilisés restent disponibles et sont reportés de mois en mois jusqu'à leur expiration 12 mois après l'achat.

Les crédits sont non remboursables. N'achetez que ce dont vous avez besoin—vous pouvez toujours recharger plus tard. Si une erreur de plateforme cause un échec de facturation, nous pouvons restaurer les crédits affectés après enquête. Pas de remboursement en espèces.

Les prix sont fixés en crédits, pas en dollars. Chaque endpoint a son propre coût—voir le badge « Crédits / requête » ci-dessus. Vous saurez toujours exactement ce que vous dépensez.
← Retour aux APIs