Endpoint
Returns an image directly. All parameters are passed as query string arguments. CORS is open — the endpoint can be called from any origin.
Quick Start
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| type required | string | — | QR code type. See supported types below. |
| format optional | svg | png | webp | png | Output image format. |
| size optional | integer | 300 | Output size in pixels (50–2000). |
| margin optional | integer | 4 | Quiet zone in modules (0–20). |
| ec optional | L | M | Q | H | M | Error correction level. Higher = more redundancy. |
| fg optional | hex | 000000 | Foreground (dot) color as 6-digit hex (no #). |
| bg optional | hex | ffffff | Background color as 6-digit hex (no #). |
| transparent optional | boolean | false | Transparent background (SVG/WebP/PNG). |
| style optional | square | dots | rounded | square | Dot style. |
QR Code Types
Pass type= with one of the values below. Each type requires its own content parameters.
emailEmailemailEmail addresssubjectEmail subject (optional)bodyEmail body (optional)phonePhonephonePhone number with country codesmsSMSphonePhone numbermessagePre-filled message (optional)wifiWiFissidNetwork name (SSID)passwordWiFi passwordencryptionWPA | WEP | nopasshiddentrue if network is hiddenvcardvCardnameFull name (required)orgOrganizationphonePhone numberemailEmail addressurlWebsite URLaddressStreet addresslocationLocationlatLatitudelngLongitudequerySearch query instead of coordinateswhatsappWhatsAppphonePhone number with country code (no +)messagePre-filled message (optional)telegramTelegramusernameTelegram username (without @)messagePre-filled message (optional)calendarEventtitleEvent title (required)startStart datetime ISO 8601endEnd datetime ISO 8601locationEvent locationdescriptionEvent descriptionallDaytrue for all-day eventsyoutubeYouTubeurlYouTube video, channel, or playlist URLtwitterTwitter / XusernameTwitter/X username (without @)facebookFacebookurlFacebook page or profile URLlinkedinLinkedInurlLinkedIn profile or page URLinstagramInstagramusernameInstagram username (without @)bitcoinBitcoinaddressBitcoin address (required)amountAmount in BTC (optional)labelPayment label (optional)messagePayment message (optional)zoomZoomurlFull Zoom meeting URL (preferred)meetingIdMeeting ID (if no URL)passwordMeeting password (optional)appstoreApp StoreiosUrlApple App Store URLandroidUrlGoogle Play Store URLpaypalPayPalusernamePayPal.me usernameamountRequest amount (optional)currencyCurrency code (optional)Live Examples
Click any URL to open it in your browser and see the generated QR code.
Simple URL QR — PNG
https://qrwing.com/api/qr?type=url&url=https://qrwing.comURL — SVG, blue, large
https://qrwing.com/api/qr?type=url&url=https://qrwing.com&format=svg&fg=1d4ed8&size=500URL — dots style, colored
https://qrwing.com/api/qr?type=url&url=https://qrwing.com&style=dots&fg=7c3aed&bg=faf5ffResponse
On success, the API returns the image binary with the appropriate Content-Type header:
| Format | Content-Type |
|---|---|
| png | image/png |
| svg | image/svg+xml |
| webp | image/webp |
On error, the API returns JSON with a 400 or 500 status:
Caching & Rate Limits
Responses include Cache-Control: public, max-age=86400 so images are cached for 24 hours by browsers and CDNs.
The API is free and has no authentication requirement. We ask that you avoid excessive automated requests. For bulk generation (>1,000 QR codes/day), please contact us.
