MPP API 統合ガイド

MPP 決済プロトコルを使って背景削除を統合するために必要なすべて。

クイックスタート

画像を生のボディとして POST リクエストを送信します。API は MPP 仕様に基づき HTTP 402 と WWW-Authenticate: Payment ヘッダーでチャレンジを返します。

# Step 1: discovery — returns HTTP 402 with a "Payment" challenge
curl -X POST https://mpp.clearcanvas.app/v1/remove-background \
  -H "Content-Type: image/png" \
  --data-binary @photo.png

# Step 2: paid request — attach an Authorization: Payment header
curl -X POST https://mpp.clearcanvas.app/v1/remove-background \
  -H "Content-Type: image/png" \
  -H "Authorization: Payment <mpp-credential>" \
  --data-binary @photo.png \
  --output result.png

MPP による認証

MPP は Stripe と Tempo が共同で立ち上げたオープンな HTTP 決済プロトコルです。最初のリクエストで、API は HTTP 402 と WWW-Authenticate: Payment チャレンジを返します。mppx SDK を使用して Tempo 上で pathUSD 送金に署名し、Authorization: Payment ヘッダーを付けて再送信します。

mppx SDK のドキュメントを見る

TypeScript

import fs from 'fs';
import { MppxClient } from 'mppx/client';

// Configure the mppx client for the Tempo crypto rail (pathUSD).
const client = new MppxClient({
  wallet: process.env.TEMPO_WALLET_PRIVATE_KEY!,
  network: 'tempo',
});

const res = await client.fetch('https://mpp.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 mpp import wrap_httpx   # pip install mpp

client = wrap_httpx(
    wallet=os.environ["TEMPO_WALLET_PRIVATE_KEY"],
    network="tempo",
)
resp = client.post(
    "https://mpp.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 — 支払い必要(WWW-Authenticate: Payment チャレンジ)

エラー処理

  • 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 は Tempo メインネットで動作します。支払いは pathUSD で決済されます(1 枚あたり $0.05)。リクエストを行う前に、Tempo ウォレットに pathUSD が入っていることを確認してください。エンドツーエンドのテストには Tempo テストネットを無料で利用できます。

統合の準備はできていますか?