QR Code API for Python

Generate QR codes in Python using the requests library. Perfect for Django, Flask, FastAPI, scripts, and data pipelines.

Installation

pip install requests

Quick Start

import requests
import os

def generate_qr(data, filename, **options):
    """Generate a QR code and save to file."""
    
    api_key = os.environ.get('QR_API_KEY')
    
    params = {
        'data': data,
        'size': options.get('size', 300),
        'format': options.get('format', 'png'),
        'color': options.get('color', '000000'),
        'background': options.get('background', 'ffffff'),
    }
    
    response = requests.get(
        'https://qrcodeapi.io/api/generate',
        params=params,
        headers={'Authorization': f'Bearer {api_key}'}
    )
    
    response.raise_for_status()
    
    with open(filename, 'wb') as f:
        f.write(response.content)
    
    return filename

# Usage
generate_qr('https://example.com', 'qr.png')
generate_qr('https://github.com', 'github.png', size=400, color='4F46E5')

Flask Example

from flask import Flask, request, Response
import requests
import os

app = Flask(__name__)

@app.route('/qr')
def generate_qr():
    data = request.args.get('data')
    if not data:
        return {'error': 'data parameter required'}, 400
    
    response = requests.get(
        'https://qrcodeapi.io/api/generate',
        params={'data': data},
        headers={'Authorization': f'Bearer {os.environ["QR_API_KEY"]}'}
    )
    
    return Response(
        response.content,
        mimetype='image/png',
        headers={'Cache-Control': 'public, max-age=86400'}
    )

if __name__ == '__main__':
    app.run(debug=True)

Django View

from django.http import HttpResponse
import requests
from django.conf import settings

def qr_code_view(request):
    data = request.GET.get('data')
    
    response = requests.get(
        'https://qrcodeapi.io/api/generate',
        params={'data': data},
        headers={'Authorization': f'Bearer {settings.QR_API_KEY}'}
    )
    
    return HttpResponse(
        response.content,
        content_type='image/png'
    )

FastAPI Example

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:
        response = 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=response.content,
        media_type="image/png"
    )

Batch Generation

import requests
import os

def generate_batch(items):
    """Generate multiple QR codes in one request."""
    
    response = requests.post(
        'https://qrcodeapi.io/api/batch',
        json={'items': items},
        headers={'Authorization': f'Bearer {os.environ["QR_API_KEY"]}'}
    )
    
    return response.json()

# Generate 5 QR codes at once
results = generate_batch([
    {'data': 'https://example1.com'},
    {'data': 'https://example2.com'},
    {'data': 'https://example3.com', 'size': 400},
    {'data': 'https://example4.com', 'color': 'FF0000'},
    {'data': 'https://example5.com'},
])

Start Building with Python

Get your free API key and start generating QR codes in minutes.

Get Free API Key