Habilitar acesso de desenvolvedor
Abra Configurações → Desenvolvedor, habilite o acesso e crie uma chave da API e endpoints de webhook opcionais.
- As chaves são limitadas à sua conta de vendedor e podem ser revogadas a qualquer momento.
- O tráfego da API aberta é limitado a 300 solicitações por minuto para cada vendedor.
- GET /api/v1 retorna metadados de descoberta para recursos disponíveis.
Autentique e chame a API
Envie Authorization: Bearer com sua chave secreta ao vivo. Prefira apenas HTTPS. Nunca insira chaves em clientes públicos.
- offers:read: listar e obter ofertas.
- offers:write: criar, atualizar, publicar e deletar ofertas.
- orders:read: listar e obter pedidos do vendedor.
- orders:write: marcar pedidos como entregues.
Liste pedidos recentes
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/orders
Rotacione chaves
Se uma chave vazar, revogue-a nas configurações do desenvolvedor e crie uma nova. Atualize sua automação antes de revogar se você estiver ao vivo.
Abrir mapa de endpoints da API
O caminho base é /api/v1. Respostas bem-sucedidas incluem X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. GET /api/v1 retorna um catálogo de operações legível por máquina que corresponde a este artigo.
- GET /api/v1: descoberta (qualquer chave válida).
- GET /api/v1/offers: listar ofertas (offers:read).
- POST /api/v1/offers: criar rascunho (offers:write).
- GET /api/v1/offers/:urlOrId: obter oferta (offers:read).
- PATCH /api/v1/offers/:urlOrId: atualizar campos da oferta (offers:write).
- DELETE /api/v1/offers/:urlOrId: deletar ou arquivar (offers:write).
- POST /api/v1/offers/:urlOrId/publish: publicar (offers:write).
- GET /api/v1/orders: listar vendas (orders:read).
- GET /api/v1/orders/:uid: obter pedido (orders:read).
- POST /api/v1/orders/:uid/deliver: marcar como entregue (orders:write).
Imprimir o catálogo de operações ao vivo
curl -s -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1 | jq ".operations"
API de Ofertas
Identificadores de ofertas aceitam o slug da URL pública ou id numérico. Respostas omitem id interno e sellerId. Linhas de estoque, preços de opções, mídia e atributos são gerenciados no editor do vendedor (ou futuros endpoints), não via PATCH ainda.
Listar ofertas ativas
curl -H "Authorization: Bearer rmt_sk_live_…" "https://rmt.gg/api/v1/offers?archive=active"
Criar uma oferta de rascunho
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/offers
Obter uma oferta com relações
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL
Atualizar campos permitidos
curl -X PATCH -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL -d @body.json
Campos permitidos no corpo do PATCH
{
"title": "Título atualizado",
"description": "Descrição voltada para o comprador",
"visibility": "PÚBLICO",
"categoryId": 12,
"offeringId": 34,
"thumbnail": "https://…",
"offerType": "CONTA",
"listingMode": "PADRÃO"
}Publicar (padrão PÚBLICO)
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL/publish -d '{"visibility":"PÚBLICO"}'Deletar ou arquivar
curl -X DELETE -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/offers/YOUR_OFFER_URL
Requisitos para publicação
A publicação falha com 400 se os campos obrigatórios da listagem estiverem incompletos (mesma validação que o editor de ofertas). Atualizações bem-sucedidas podem emitir um webhook offer.updated.
API de Pedidos
Os pedidos estão vinculados à sua conta de vendedor. Detalhes de cobrança do comprador podem ser ocultados. Use o uid do pedido público (não apenas a referência opaca) para obter e entregar.
Listar vendas pagas recentes
curl -H "Authorization: Bearer rmt_sk_live_…" "https://rmt.gg/api/v1/orders?status=PAID&limit=20&sort=newest"
Obter um pedido com itens
curl -H "Authorization: Bearer rmt_sk_live_…" https://rmt.gg/api/v1/orders/ORDER_UID
Marcar como entregue
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" -H "Content-Type: application/json" https://rmt.gg/api/v1/orders/ORDER_UID/deliver -d @evidence.json
Corpo de evidência opcional
{
"evidence": [
"https://cdn.example.com/proof-1.png"
]
}Erros e limites de taxa
Erros retornam JSON { error, code? }. O limite de taxa é de 300 requisições por minuto por chave de API.
- 401 API_KEY_REQUIRED ou API_KEY_INVALID.
- 403 SCOPE_MISSING quando a chave não possui o escopo do endpoint.
- 404 Não encontrado para ofertas ou pedidos que você não possui (mes mesma mensagem de qualquer forma).
- 429 RATE_LIMITED com Retry-After e cabeçalhos X-RateLimit-*.
- 400 para falhas de validação (publicação incompleta, entrega não permitida, PATCH vazio).
Lidar com 429
Aguarde usando os segundos de Retry-After. Não troque chaves para contornar limites; o limite é por chave e fixo para todos os vendedores.
Webhooks de pedidos de saída
Inscreva-se em order.paid, order.delivered, order.completed, order.refunded e order.disputed. Escolha JSON para seu servidor ou Discord para embeds de canal. A assinatura opcional usa X-RMT-Timestamp e X-RMT-Signature.
- Postagens em formato Discord apresentam embeds ricos com um link de pedido e nome da oferta.
- Postagens em formato JSON apresentam um corpo estruturado incluindo nomes de ofertas e itens de linha.
- Se você definir um segredo, verifique se HMAC-SHA256 de timestamp.body é igual ao hex de v1=.
- O histórico de entrega aparece sob cada endpoint para que você possa tentar novamente falhas.
Exemplo de cabeçalhos assinados
{
"X-RMT-Event": "order.paid",
"X-RMT-Timestamp": "1710000000",
"X-RMT-Signature": "v1=abc123…"
}Verifique assinaturas
Calcule HMAC-SHA256 sobre a string timestamp + "." + rawBody usando seu segredo de endpoint. Compare com o hex após v1=.
Esboço em Node.js
import crypto from "crypto";
const expected = crypto
.createHmac("sha256", secret)
.update(`${timestamp}.${rawBody}`)
.digest("hex");
const ok = expected === signature.replace(/^v1=/, "");