MPP API — Guia de Integração

Tudo o que precisa para integrar a remoção de fundo usando o protocolo de pagamento MPP.

Início Rápido

Envie um pedido POST com a sua imagem como corpo em bruto. A API desafia com HTTP 402 e um cabeçalho WWW-Authenticate: Payment de acordo com a especificação MPP.

# 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

Autenticação via MPP

O MPP é um protocolo de pagamento HTTP aberto co-lançado pela Stripe e pela Tempo. No primeiro pedido, a API devolve HTTP 402 com um desafio WWW-Authenticate: Payment. Assine uma transferência pathUSD na Tempo usando o SDK mppx e reenvie com o cabeçalho Authorization: Payment.

Ver a documentação do SDK mppx

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)

Formato do Pedido

  • Endpoint
  • Body: bytes de imagem em bruto (PNG, JPEG ou WebP)
  • Content-Type: image/png | image/jpeg | image/webp
  • Opcional: ?format=webp para saída em WebP

Formato da Resposta

  • HTTP 200 — imagem binária (PNG ou WebP)
  • HTTP 402 — pagamento necessário (desafio WWW-Authenticate: Payment)

Tratamento de Erros

  • 400 — Imagem inválida (formato incorrecto, bytes mágicos não coincidentes, ou dimensão excedida)
  • 413 — Ficheiro demasiado grande (> 25 MB)
  • 415 — Content-Type não suportado
  • 429 — Limite de velocidade excedido (pedidos não pagos: 30/min/IP)
  • 500 — Processamento falhado (retryable: true)
  • 503 — Processador temporariamente indisponível (retryable: true)

Limites e Formatos

  • Tamanho máx. do ficheiro: 25 MB
  • Dimensões máx.: 10.000 × 10.000 px
  • Entrada suportada: PNG, JPEG, WebP
  • Saída: PNG (predefinido) ou WebP

Rede

A API funciona na mainnet da Tempo. Os pagamentos são liquidados em pathUSD ($0,05 por imagem). Certifique-se de que a sua carteira Tempo tem pathUSD antes de efetuar pedidos. Use a testnet da Tempo para testes ponta a ponta sem custos.

Pronto para integrar?