クイックスタート
画像を生のボディとして POST リクエストを送信します。認証ヘッダー不要——API は支払いに x402 を使用します。
# Step 1: discovery — returns HTTP 402 with payment details curl -X POST https://x402.clearcanvas.app/v1/remove-background \ -H "Content-Type: image/png" \ --data-binary @photo.png # Step 2: paid request — attach X-PAYMENT header with signed USDC transfer curl -X POST https://x402.clearcanvas.app/v1/remove-background \ -H "Content-Type: image/png" \ -H "X-PAYMENT: <base64-signed-payload>" \ --data-binary @photo.png \ --output result.png
x402 による認証
x402 は標準的な HTTP 決済プロトコルです。最初のリクエストで、API は支払い詳細とともに HTTP 402 を返します。Coinbase x402 SDK を使用して Base 上で USDC 送金に署名し、X-PAYMENT ヘッダーを付けて再送信します。
GitHub で x402 SDK を見る →TypeScript
import fs from 'fs';
import { wrapFetchWithPayment } from '@coinbase/x402';
import { privateKeyToAccount } from 'viem/accounts';
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
const fetch402 = wrapFetchWithPayment(fetch, account);
const res = await fetch402('https://x402.clearcanvas.app/v1/remove-background', {
method: 'POST',
headers: { 'Content-Type': 'image/png' },
body: fs.readFileSync('photo.png'),
});
const buffer = await res.arrayBuffer();
fs.writeFileSync('result.png', Buffer.from(buffer));Python
import os
import httpx
from x402.client import wrap_httpx # pip install x402
client = wrap_httpx(private_key=os.environ["PRIVATE_KEY"])
resp = client.post(
"https://x402.clearcanvas.app/v1/remove-background",
content=open("photo.png", "rb").read(),
headers={"Content-Type": "image/png"},
)
open("result.png", "wb").write(resp.content)リクエスト形式
- •エンドポイント
- •Body:生の画像バイト(PNG、JPEG または WebP)
- •Content-Type:image/png | image/jpeg | image/webp
- •オプション:WebP 出力の場合は ?format=webp
レスポンス形式
- •HTTP 200——バイナリ画像(PNG または WebP)
- •HTTP 402——支払い必要(ボディに x402 詳細)
エラー処理
- •400——無効な画像(不正な形式、マジックバイト不一致、またはサイズ超過)
- •413——ファイルが大きすぎる(> 25 MB)
- •415——未対応の Content-Type
- •429——レート制限超過(未払いリクエスト:30回/分/IP)
- •500——処理失敗(retryable: true)
- •503——プロセッサー一時的に利用不可(retryable: true)
制限と形式
- •最大ファイルサイズ:25 MB
- •最大サイズ:10,000 × 10,000 px
- •対応入力:PNG、JPEG、WebP
- •出力:PNG(デフォルト)または WebP
ネットワーク
APIはBase mainnetで動作します。支払いは実際のUSDCで決済されます(1枚あたり$0.05)。リクエストを行う前に、ウォレットにBase上のUSDCが含まれていることを確認してください。