L402 API
Pay with Bitcoin, get AI results. Copy-paste the commands below.
Choose a service:
Before You Start
Want to try this without a terminal? Use Image Upscaling on the web — pay with any Lightning wallet, no setup needed.
Upscale Images via L402
Upscale images 2x or 4x with neural super-resolution. Recovers real detail from low-resolution images — not interpolation.
API Endpoint: https://sats4ai.com/api/l402/upscale-image
Constraints
- Image must be base64-encoded (with or without
data:prefix) - Scale:
2or4(default: 4) - Optional face enhancement for portrait upscaling
- 5 sats per image
Step 1: Initial Request (get Invoice)
Send your base64 image and desired scale. You will receive a 402 Payment Required response with a Lightning invoice.
Request body:
{
"image": "<base64-encoded-image>",
"scale": 4
}Example curl command:
curl -X POST https://sats4ai.com/api/l402/upscale-image \
-H "Content-Type: application/json" \
-d '{
"image": "<base64-encoded-image>",
"scale": 4
}' \
-iExpected response headers:
www-authenticate: L402 macaroon="<YOUR_MACAROON>", invoice="<LIGHTNING_INVOICE>"Step 2: Pay the Lightning Invoice
Pay the invoice with any Lightning wallet (Phoenix, Muun, Alby, Wallet of Satoshi, etc.). Save the preimage your wallet provides after payment.
Step 3: Re-send with Payment Proof
Send the exact same request again with the Authorization header.
The JSON payload must be identical to Step 1.
curl -X POST https://sats4ai.com/api/l402/upscale-image \
-H "Content-Type: application/json" \
-H "Authorization: L402 <YOUR_MACAROON>:<YOUR_PREIMAGE>" \
-d '{
"image": "<base64-encoded-image>",
"scale": 4
}'Successful response includes image_url (URL to upscaled image — download promptly).
Easier: Use lnget
lnget handles the full L402 flow automatically — invoice, payment, and re-request in one command.
IMAGE_B64=$(base64 -w0 photo.png)
lnget -X POST https://sats4ai.com/api/l402/upscale-image \
--json "{\"image\":\"$IMAGE_B64\",\"scale\":4}"Python Example
import requests, base64
# Encode image
with open("photo.png", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode()
payload = { "image": image_b64, "scale": 4 }
# Step 1 — get invoice
r = requests.post("https://sats4ai.com/api/l402/upscale-image",
json=payload,
headers={"Content-Type": "application/json"})
# r.status_code == 402
# Parse macaroon and invoice from r.headers["www-authenticate"]
# Step 2 — pay invoice with your Lightning wallet, get preimage
# Step 3 — re-send with auth
r2 = requests.post("https://sats4ai.com/api/l402/upscale-image",
json=payload,
headers={
"Content-Type": "application/json",
"Authorization": "L402 <macaroon>:<preimage>"
})
result = r2.json()
print(result["image_url"]) # URL to upscaled image (download promptly)Request Parameters
image: string required
Base64-encoded image data. Can include the data:image/png;base64, prefix or just the raw base64 string.
scale: number (optional)
Upscale factor. 2 or 4 (default: 4).
face_enhance: boolean (optional)
Enable face enhancement during upscaling. Useful for portrait photos.
modelId: number or string (optional)
Omit for the best default model.
Pricing
5 sats per image (any scale).
Use Cases
- Enhance low-resolution photos for print or display
- Upscale thumbnails or compressed images to full resolution
- Improve AI-generated images that are too small
- Batch-upscale image archives via script or agent