QR codes
Create QR codes with logo, colors, styles, and content types, then list or update them.
Supported types
Pass type as one of these keys. Content fields change with the type.
- text
- url
- phone
- sms
- facetime
- location
- wifi
- event
- vcard
- crypto
- paypal
- upi
- epc
- pix
POST/api/v1/qr-codesCreate QR code
Send JSON in the request body. name and type are required. For url types, pass url. Add style, colors, and qr_code_logo to match a designed code from the studio. File type is not available on the API.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | Yes | — | Label saved on the resource. |
| type | string | Yes | url | Content type. One of the supported QR keys, except file. |
| url | string | No | — | Destination URL. Required when type is url. |
| text | string | No | — | Plain text. Required when type is text. For bulk text, separate lines in this field. |
| url_dynamic | boolean | No | false | If true, a short link is created and the QR encodes that link so the destination can change later. |
| project_id | integer | No | — | Project to attach the resource to. |
| is_bulk | boolean | No | false | If true and type is text, one QR is created per line in text. |
| style | string | No | square | Module shape. Examples: square, dot, rounded, heart, hexagon. |
| inner_eye_style | string | No | square | Inner finder-pattern shape. Examples: square, dot, circle, rounded. |
| outer_eye_style | string | No | square | Outer finder-pattern shape. Examples: square, circle, rounded, flower. |
| size | integer | No | 500 | Image size in pixels, 50–2000. |
| margin | integer | No | 0 | Quiet-zone modules, 0–25. |
| ecc | string | No | M | Error correction: L, M, Q, or H. Use H when you add a logo. |
| foreground_type | string | No | color | color or gradient. |
| foreground_color | string | No | #000000 | Module color as HEX. |
| foreground_gradient_style | string | No | horizontal | vertical, horizontal, diagonal, inverse_diagonal, or radial. |
| foreground_gradient_one | string | No | — | First gradient HEX color. |
| foreground_gradient_two | string | No | — | Second gradient HEX color. |
| background_color | string | No | #ffffff | Background HEX color. Keep it lighter than the modules. |
| background_color_transparency | integer | No | 0 | Background transparency, 0–100. |
| custom_eyes_color | boolean | No | false | If true, eyes use eyes_inner_color and eyes_outer_color. |
| eyes_inner_color | string | No | #000000 | Inner-eye HEX color. |
| eyes_outer_color | string | No | #000000 | Outer-eye HEX color. |
| qr_code_logo | string | No | — | Logo image URL or uploaded file key. |
| qr_code_logo_size | number | No | 25 | Logo size as a percent of the QR, 5–40. |
| frame | string | No | — | Optional frame key from the studio. |
| frame_text | string | No | — | Caption drawn on the frame. |
Content fields by type
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| phone | string | No | — | Phone number when type is phone. |
| sms | string | No | — | Phone number when type is sms. |
| sms_body | string | No | — | SMS message body. |
| string | No | — | Recipient when type is email. | |
| email_subject | string | No | — | Email subject. |
| email_body | string | No | — | Email body. |
| string | No | — | WhatsApp number, digits only. | |
| whatsapp_body | string | No | — | WhatsApp prefilled text. |
| wifi_ssid | string | No | — | Network name when type is wifi. |
| wifi_password | string | No | — | Wi-Fi password. |
| wifi_encryption | string | No | WPA | nopass, WEP, WPA, or WPA/WPA2. |
| location_latitude | number | No | — | Latitude when type is location. |
| location_longitude | number | No | — | Longitude when type is location. |
| event | string | No | — | Event title when type is event. |
| event_start_datetime | string | No | — | ISO datetime for the event start. |
| vcard first_name / last_name / email | string | No | — | vCard fields: first_name, last_name, email, and the other studio keys. |
Request example
curl -X POST 'https://forqrcode.com/api/v1/qr-codes' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Website QR",
"type": "url",
"url": "https://forqrcode.com",
"style": "rounded",
"size": 500,
"ecc": "M",
"foreground_color": "#17191c",
"background_color": "#ffffff",
"qr_code_logo": "https://forqrcode.com/logo.png",
"qr_code_logo_size": 25
}'More examples
Gradient QR
curl -X POST 'https://forqrcode.com/api/v1/qr-codes' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Gradient QR",
"type": "url",
"url": "https://forqrcode.com",
"style": "dot",
"inner_eye_style": "circle",
"outer_eye_style": "rounded",
"foreground_type": "gradient",
"foreground_gradient_style": "radial",
"foreground_gradient_one": "#5c8b29",
"foreground_gradient_two": "#25492f",
"background_color": "#ffffff",
"size": 600
}'Wi-Fi QR
curl -X POST 'https://forqrcode.com/api/v1/qr-codes' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Office Wi-Fi",
"type": "wifi",
"wifi_ssid": "Guest",
"wifi_password": "correct-horse",
"wifi_encryption": "WPA",
"style": "square",
"ecc": "H"
}'Response example
{
"data": {
"id": 1,
"type": "url",
"name": "Website QR",
"qr_code": "https://…/qr-codes/…/qr.svg",
"settings": {
"style": "rounded",
"size": 500,
"ecc": "M"
}
}
}GET/api/v1/qr-codesList QR code
| Name | Type | Required | Description |
|---|---|---|---|
| page | integer | No | Page number (default 1) |
| results_per_page | integer | No | Items per page (default 25, max 100) |
| search | string | No | Search term |
| search_by | string | No | Column to search |
| order_by | string | No | Sort column |
| order_type | string | No | asc or desc |
| datetime_start | string | No | ISO datetime filter start |
| datetime_end | string | No | ISO datetime filter end |
| project_id | integer | No | — |
| type | string | No | — |
curl -X GET 'https://forqrcode.com/api/v1/qr-codes' \ -H 'Authorization: Bearer YOUR_API_KEY'
GET/api/v1/qr-codes/{id}Read one QR code
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer | Yes | — |
curl -X GET 'https://forqrcode.com/api/v1/qr-codes/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY'PATCH/api/v1/qr-codes/{id}Update QR code
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | integer | Yes | — | — |
| name | string | No | — | Label saved on the resource. |
| type | string | No | url | Content type. One of the supported QR keys, except file. |
| url | string | No | — | Destination URL. Required when type is url. |
| text | string | No | — | Plain text. Required when type is text. For bulk text, separate lines in this field. |
| url_dynamic | boolean | No | false | If true, a short link is created and the QR encodes that link so the destination can change later. |
| project_id | integer | No | — | Project to attach the resource to. |
| is_bulk | boolean | No | false | If true and type is text, one QR is created per line in text. |
| style | string | No | square | Module shape. Examples: square, dot, rounded, heart, hexagon. |
| inner_eye_style | string | No | square | Inner finder-pattern shape. Examples: square, dot, circle, rounded. |
| outer_eye_style | string | No | square | Outer finder-pattern shape. Examples: square, circle, rounded, flower. |
| size | integer | No | 500 | Image size in pixels, 50–2000. |
| margin | integer | No | 0 | Quiet-zone modules, 0–25. |
| ecc | string | No | M | Error correction: L, M, Q, or H. Use H when you add a logo. |
| foreground_type | string | No | color | color or gradient. |
| foreground_color | string | No | #000000 | Module color as HEX. |
| foreground_gradient_style | string | No | horizontal | vertical, horizontal, diagonal, inverse_diagonal, or radial. |
| foreground_gradient_one | string | No | — | First gradient HEX color. |
| foreground_gradient_two | string | No | — | Second gradient HEX color. |
| background_color | string | No | #ffffff | Background HEX color. Keep it lighter than the modules. |
| background_color_transparency | integer | No | 0 | Background transparency, 0–100. |
| custom_eyes_color | boolean | No | false | If true, eyes use eyes_inner_color and eyes_outer_color. |
| eyes_inner_color | string | No | #000000 | Inner-eye HEX color. |
| eyes_outer_color | string | No | #000000 | Outer-eye HEX color. |
| qr_code_logo | string | No | — | Logo image URL or uploaded file key. |
| qr_code_logo_size | number | No | 25 | Logo size as a percent of the QR, 5–40. |
| frame | string | No | — | Optional frame key from the studio. |
| frame_text | string | No | — | Caption drawn on the frame. |
Request example
curl -X PATCH 'https://forqrcode.com/api/v1/qr-codes/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://forqrcode.com/pricing",
"foreground_color": "#5d2a1a"
}'DELETE/api/v1/qr-codes/{id}Delete QR code
| Name | Type | Required | Description |
|---|---|---|---|
| id | integer | Yes | — |
curl -X DELETE 'https://forqrcode.com/api/v1/qr-codes/{id}' \
-H 'Authorization: Bearer YOUR_API_KEY'Parameter names and JSON examples are shown in English. Replace YOUR_API_KEY with a key from your account.