Python Integration
Generate QR codes in Python using the requests library.
Installation
pip install requests
Quick Start
import requests
import os
def generate_qr(data: str, **options) -> bytes:
"""Generate a QR code image."""
response = requests.get(
'https://qrcodeapi.io/api/generate',
params={'data': data, **options},
headers={'Authorization': f'Bearer {os.environ["QR_API_KEY"]}'}
)
response.raise_for_status()
return response.content
# Usage
qr_image = generate_qr('https://example.com', size=400)
with open('qr.png', 'wb') as f:
f.write(qr_image)
Flask Integration
from flask import Flask, request, Response
import requests
import os
app = Flask(__name__)
@app.route('/qr')
def generate_qr():
data = request.args.get('data')
r = requests.get(
'https://qrcodeapi.io/api/generate',
params={'data': data},
headers={'Authorization': f'Bearer {os.environ["QR_API_KEY"]}'}
)
return Response(r.content, mimetype='image/png')
Django View
from django.http import HttpResponse
import requests
from django.conf import settings
def qr_view(request):
data = request.GET.get('data')
r = requests.get(
'https://qrcodeapi.io/api/generate',
params={'data': data},
headers={'Authorization': f'Bearer {settings.QR_API_KEY}'}
)
return HttpResponse(r.content, content_type='image/png')
FastAPI (Async)
from fastapi import FastAPI
from fastapi.responses import Response
import httpx
import os
app = FastAPI()
@app.get("/qr")
async def generate_qr(data: str, size: int = 300):
async with httpx.AsyncClient() as client:
r = await client.get(
"https://qrcodeapi.io/api/generate",
params={"data": data, "size": size},
headers={"Authorization": f"Bearer {os.environ['QR_API_KEY']}"}
)
return Response(content=r.content, media_type="image/png")
Batch Processing Script
import requests
import os
from concurrent.futures import ThreadPoolExecutor
def generate_single(item):
r = requests.get(
'https://qrcodeapi.io/api/generate',
params={'data': item['url']},
headers={'Authorization': f'Bearer {os.environ["QR_API_KEY"]}'}
)
with open(f'qr_{item["id"]}.png', 'wb') as f:
f.write(r.content)
return item['id']
items = [
{'id': 1, 'url': 'https://example1.com'},
{'id': 2, 'url': 'https://example2.com'},
{'id': 3, 'url': 'https://example3.com'},
]
with ThreadPoolExecutor(max_workers=5) as executor:
results = list(executor.map(generate_single, items))