Documentação da API Pública - GameMarket
Integre seu sistema com a GameMarket usando nossa API RESTful. Gerencie produtos, pedidos, saldo e estatísticas de vendas diretamente da sua aplicação.
Autenticação
Todas as requisições à API devem incluir o header x-api-key com sua chave de API. As chaves seguem o formato gm_sk_[64 caracteres hex].
Requisitos: Ser vendedor verificado na plataforma.
Base URL
https://gamemarket.com.br/api/v1
Caminho alternativo: https://gamemarket.com.br/api/gamemarket
Endpoints Disponíveis
Gestão de Chaves
- POST /api/api-keys - Criar nova chave de API (máximo 5 ativas)
- GET /api/api-keys - Listar todas as chaves
- DELETE /api/api-keys/:id - Revogar uma chave
- GET /api/api-keys/:id/usage - Histórico de uso (últimas 100 requisições)
Produtos
- GET /api/v1/products - Listar produtos com paginação e filtros de status
- GET /api/v1/products/:id - Detalhes de um produto específico
- POST /api/v1/products - Criar novo anúncio (limite: 50/dia)
- PATCH /api/v1/products/:id - Atualizar produto existente
Saldo
- GET /api/v1/balance - Saldo disponível, pendente e bloqueado
Pedidos
- GET /api/v1/orders - Listar pedidos (vendas e compras)
- GET /api/v1/orders/:id - Detalhes de um pedido
Estatísticas
- GET /api/v1/stats - Total de vendas, avaliação, nível e produtos ativos
Jogos
- GET /api/v1/games - Listar jogos disponíveis na plataforma
Limites e Quotas (v1)
- Requisições por minuto: 30
- Requisições por dia: 3000
- Criação de anúncios: 50 por dia
- Imagens por anúncio: máximo 10
- Título do produto: 5-200 chars
- Descrição: 20-5,000 chars
- :
- Preço mínimo: R$ 1,00 (padrão; configurável por jogo)
API v2 (Beta)
A API v2 mantém a v1 intacta e adiciona: variantes com preço individual, edição de preço e estoque de cada variante, reabastecimento de estoque de entrega automática, criação de anúncios multi-variante, edição em massa de preço e status, mediações, avaliações recebidas e contestação de avaliação, com scopes granulares e idempotência obrigatória nas escritas.
Base URL: https://gamemarket.com.br/api/v2 · Autenticação: header x-api-key com chave de prefixo gm_v2_sk_ (chaves v1 e v2 são isoladas entre si).
Autenticação e Scopes
Cada chave v2 recebe scopes granulares na criação (ex.: catalog:read, products:read, products:write, orders:read, mediations:read, reviews:read, reviews:contest, wallet:read). Endpoint sem o scope necessário responde 403.
Idempotência (obrigatória em escritas)
Toda requisição POST/PATCH exige o header Idempotency-Key (16–255 caracteres [A-Za-z0-9_-]). Reenvios com a mesma chave retornam a mesma resposta sem duplicar a operação.
- Sem o header em escrita → 400 (IDEMPOTENCY_KEY_REQUIRED)
- Requisição idêntica ainda em processamento → 409
- Reenvio após sucesso → resposta original armazenada (janela de 24h)
Endpoints v2
- GET /api/v2/products - Listar anúncios com variantes e preço de cada uma
- GET /api/v2/products/:id - Detalhe do anúncio com preço efetivo/base
- POST /api/v2/products - Criar anúncio (single ou multi-variante com entrega automática)
- PATCH /api/v2/products/:id - Atualizar anúncio (em anúncio com variantes, o preço muda pela rota de variantes)
- PATCH /api/v2/products/:id/variants - Alterar preço e estoque das variantes de um anúncio dinâmico (retorno item a item, de 1 a 100 variantes por requisição)
- POST /api/v2/products/:id/stock - Reabastecer o estoque de entrega automática (adiciona credenciais, com deduplicação). Limites por requisição: 2000 itens, 5000 caracteres por item e 10000 itens no total por anúncio ou variante
- PATCH /api/v2/products/bulk-price - Edição de preço em massa (retorno item a item, de 1 a 100 itens por requisição)
- PATCH /api/v2/products/bulk-status - Ativar/desativar anúncios em massa (de 1 a 100 itens por requisição)
- GET /api/v2/orders e GET /api/v2/orders/:id - Pedidos (vendas e compras)
- GET /api/v2/mediations e GET /api/v2/mediations/:orderId - Mediações (leitura)
- GET /api/v2/reviews, GET /api/v2/reviews/stats, POST /api/v2/reviews/:reviewId/contest e GET /api/v2/contestations - Avaliações e contestações
- GET /api/v2/balance e GET /api/v2/stats - Saldo e estatísticas
- GET /api/v2/catalog/games - Catálogo de jogos com preço mínimo
- GET /api/v2/me e GET /api/v2/usage - Identidade da chave e consumo atual
Exemplos de payload (endpoints de escrita da v2)
Corpo de requisição aceito por cada endpoint de escrita. Todos os schemas da v2 são estritos: campo não documentado faz a requisição ser recusada com HTTP 400.
POST /api/v2/products
{ "title": "Conta Valorant Full Acesso", "description": "Conta com skins raras e e-mail original incluído.", "price": 9990, "game": "valorant", "category": "account", "warrantyPeriod": 14, "accountProvenance": "resale", "listingType": "multiple", "deliveryTime": "24h", "autoDeliverySeparator": "--", "imageUrls": [ "https://cdn.exemplo.com/conta-valorant.png" ], "variants": [ { "title": "Primária", "price": 9990, "autoDeliveryItems": "login1:senha1--login2:senha2" }, { "title": "Secundária", "price": 7990, "stock": 5 } ] }
PATCH /api/v2/products/:id
{ "price": 8990, "isActive": true, "warrantyPeriod": 14, "deliveryTime": "24h" }
PATCH /api/v2/products/:id/variants
{ "items": [ { "index": 0, "price": 4490 }, { "index": 2, "price": 8990, "stock": 7 } ] }
POST /api/v2/products/:id/stock
{ "variantIndex": 0, "credentialsText": "login1:senha1--login2:senha2--login3:senha3", "separator": "--", "dedupeMode": "skip" }
PATCH /api/v2/products/bulk-price
{ "items": [ { "id": 9123, "price": 4490 }, { "id": 9311, "price": 8990 } ] }
PATCH /api/v2/products/bulk-status
{ "items": [ { "id": 9123, "isActive": false }, { "id": 9311, "isActive": true } ] }
POST /api/v2/reviews/:reviewId/contest
{ "reason": "Avaliação injusta: o comprador não respondeu o suporte e abriu nota baixa.", "orderId": 48210 }
Limites e Quotas (v2)
- Requisições por minuto: 60 (por conta)
- Requisições por dia: 5000 (por conta)
- Headers de limite em toda resposta: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset e Retry-After
Como obter acesso
A v2 está em beta fechado: as chaves são emitidas pela equipe GameMarket para vendedores verificados, mediante solicitação via suporte. A API v1 permanece disponível para todos os vendedores verificados.
Melhores Práticas
Segurança
- Nunca exponha sua API key no código client-side - Use variáveis de ambiente e sempre faça chamadas pelo backend
- Rotacione suas chaves periodicamente - Recomendamos rotação a cada 90 dias por segurança
- Monitore o uso das suas chaves - Verifique regularmente os logs de acesso em Configurações → API
Performance
- Implemente cache local - Liste de jogos (GET /games) raramente muda, cache por 24h
- Use paginação eficientemente - Limite máximo é 100 itens. Use
limitmenor para respostas mais rápidas - Implemente retry com backoff exponencial - Em caso de erro 429 (rate limit), aguarde o tempo indicado em
X-RateLimit-Reset
Validação de Dados
- Valide antes de enviar - Verifique tipos, limites e formatos localmente antes de fazer requisições
- Sempre verifique o campo
success- Respostas incluem"success": true/false, nunca assuma sucesso sem verificar - Produtos editados podem requerer nova aprovação - Alterações em título ou descrição retornam o produto para status "em_analise"
Códigos de Erro
- 401 - API key inválida ou ausente
- A chave de API não foi fornecida ou está incorreta.
- 403 - Permissão insuficiente
- A chave de API não tem permissão para esta operação.
- 403 - Vendedor em débito (SELLER_IN_DEBT)
- A API foi suspensa porque o vendedor possui débito pendente com a plataforma. Regularize as disputas para restaurar o acesso.
- 429 - Rate limit excedido
- Você excedeu o limite de requisições. Aguarde antes de tentar novamente.
- 404 - Recurso não encontrado
- O recurso solicitado não existe ou você não tem acesso a ele.
- 500 - Erro interno do servidor
- Ocorreu um erro inesperado. Tente novamente mais tarde.
Exemplos de Código
Disponíveis em 7 linguagens: cURL, JavaScript, Python, PHP, Ruby, Go e C#.
A v1 traz exemplos de listagem de anúncios, atualização de anúncio e consulta de saldo. A v2 traz o fluxo completo de um anúncio dinâmico: descobrir o índice de cada variante em GET /api/v2/products, alterar o preço da variante em PATCH /api/v2/products/:id/variants e reabastecer o estoque de entrega automática em POST /api/v2/products/:id/stock, sempre com o header Idempotency-Key nas escritas e leitura do resultado item a item.