# Decode QR Code from Image
Read QR code content and corner positions from images.
## API Overview
- **HTTP Protocol:** HTTPS
- **HTTP Method:** POST
- **HTTP Endpoint:** https://api.gugudata.io/v1/barcode/qrcode/decode
- **Response Type:** application/json; charset=utf-8
- **DEMO Endpoint:** https://api.gugudata.io/v1/barcode/qrcode/decode/demo
- **Live Demo:** https://gugudata.io/demo/qrcode-decode
- **Postman:** https://www.postman.com/gugudata/gugudata-io
- **LLM Page:** https://gugudata.io/details/qrcode-decode/llm
- **Raw Markdown:** https://gugudata.io/details/qrcode-decode/llm.md
## Remote MCP
- **MCP Endpoint:** https://mcp.gugudata.io/mcp
- **MCP Guide:** https://gugudata.io/mcp/
- **Authorization:** OAuth authorization opens in the browser; do not paste appkeys into MCP clients.
- **Tool Scope:** MCP clients receive GuGuData API tools available to the authorized account.
## Data & API Features
- Image QR reading: Read one QR code from a supported image.
- Exact decoded text: Preserve spaces, line breaks and multilingual text.
- Content categories: Identify website, Wi-Fi, email and text payloads.
- Corner coordinates: Locate the decoded code within the image.
- Upload or image link: Submit an image file or a public image URL.
- Data-entry workflows: Connect QR reading to check-in and inventory apps.
## API Request Parameters
| Name | Type | Is Required | Default Value | Remark |
| --- | --- | --- | --- | --- |
| appkey | string | true | YOUR_APPKEY | API key used to authenticate the request. |
| file | file | false | N/A | Exactly one of file or file_url. PNG, JPEG, static WebP or BMP; maximum 10 MiB, 8192 pixels per side and 16 million pixels. |
| file_url | string | false | https://gugudata.io/assets/demo/qrcode-decode-demo.png | Public HTTP(S) image URL, at most 2048 characters; mutually exclusive with file. |
## API Response Parameters
| Name | Type | Remark |
| --- | --- | --- |
| format | string | Always QR_CODE. |
| parsed | string | Exact decoded text, identical to raw. |
| points | array<array<number>> | Four [x, y] corners in top-left, top-right, bottom-right, bottom-left order; empty if unavailable. Coordinates use the original image dimensions. |
| raw | string | Exact decoded text without trimming or normalization. |
| type | string | URI, WIFI, EMAIL or TEXT. Decoded links are not visited. |
## API Response Status Codes
| Status Code | Explanation of Status Code | Remarks |
| --- | --- | --- |
| 200 | Request processed successfully. | Some endpoints expose a separate application-level status field in the response body, such as `dataStatus.statusCode`. |
| 400 | Invalid request parameters or request format. | Check required fields, data types, and request body format. |
| 401 | Missing or unknown application key. | Provide a valid `appkey` with the request. |
| 403 | The application key is recognized but access is not allowed. | The key may be expired, inactive, or not permitted for the requested API. |
| 413 | Image exceeds the file or pixel limit. | Use at most 10 MiB, 8192 pixels per side and 16 million pixels. |
| 422 | Image is unsupported or contains no readable QR code. | Use a clear PNG, JPEG, static WebP or BMP image. |
| 429 | Request rate or trial usage limit exceeded. | Reduce request frequency and retry with backoff. If a trial allowance is exhausted, check Trial Keys for remaining requests and subscribe to continue. |
| 500 | Internal service error. | Retry later or contact support if the error persists. |
| 502 | Image download or decoding failed. | Check the image link and try again later. |
| 503 | QR decoding is temporarily unavailable. | Try again later. |
## cURL Example
```bash
curl --location 'https://api.gugudata.io/v1/barcode/qrcode/decode?appkey=YOUR_APPKEY' --form 'file=@localfile_path.png'
```