MarketBetAPI DE REVENDAVoltar ao painel
INTEGRE SEU SISTEMA

Sua revenda pela API

Crie clientes com saldo, transfira GB e acompanhe sua carteira usando as mesmas regras do painel.

Comece pela sua chave

Sua conta precisa estar aprovada. Em Integração API, crie uma chave com apenas as permissões necessárias. Guarde a chave no servidor da sua integração; ela é exibida uma única vez.

Endereço da API:

https://reseller.marketbet.com.br/api/v3/reseller.php

Inclua os cabeçalhos em cada chamada:

Authorization: Bearer SUA_CHAVE_MARKETBET
Content-Type: application/json

Nas chamadas POST, envie action dentro do corpo JSON. Colocar somente ?action=... na URL não seleciona a operação em POST. Nas consultas GET, envie action na URL conforme os exemplos abaixo. Use o método indicado para cada operação.

As respostas têm {"success":true,"data":{...}}. Em caso de erro, confira error.code e error.message.

Primeiro teste: consultar clientes

Esta chamada não cria clientes nem movimenta saldo. Uma lista vazia também é uma resposta válida. A chave precisa da permissão subusers:read.

POST /api/v3/reseller.php
Authorization: Bearer SUA_CHAVE_MARKETBET
Content-Type: application/json

{
  "action": "customers",
  "term": ""
}

Exemplo de resposta para uma conta sem clientes:

{"success":true,"data":{"items":[],"next_before":null}}

Carteira em reais: consulte e confirme o preço

Novas recargas entram em reais. Em GET ?action=wallet, leia data.wallet.cash.available_cents e reserved_cents: 100 centavos equivalem a R$ 1. Os campos available_units e reserved_units continuam exclusivos dos créditos anteriores em GB.

Use os identificadores residential, premium e mobile. Para criar clientes com a carteira em reais, consulte primeiro o valor com a permissão subusers:read:

{
  "action": "cash_quote",
  "kind": "create",
  "product": "residential",
  "gb": 1,
  "labels": ["Cliente 01"]
}

O servidor retorna total_cents para o lote, item_amounts_cents com o valor de cada cliente e quote_token. Em uma operação de um cliente, amount_cents é o valor da operação; em um lote, ele corresponde ao primeiro item. Use sempre total_cents para o total, pois créditos comprados em condições diferentes podem gerar valores distintos entre itens. Apresente total_cents ao responsável e confirme a compra usando exatamente os mesmos nomes, produto e quantidade. O token vale por dez minutos e está vinculado à sua conta, aos clientes, à quantidade e às fontes de saldo disponíveis. As novas recargas pagas em reais podem liberar preços menores por volume, válidos enquanto o crédito correspondente for consumido. A cotação considera automaticamente essa condição. Novas recargas pequenas e créditos manuais não herdam a condição de outra recarga; devoluções preservam a origem e o custo pago. Não envie um preço calculado por sua integração.

{
  "action": "cash_create_batch",
  "product": "residential",
  "gb": 1,
  "labels": ["Cliente 01"],
  "key": "criacao-exemplo-00000001",
  "quote_token": "TOKEN_RETORNADO_NA_COTACAO"
}

A criação exige subusers:create. A quantidade vale por cliente, com até 10 clientes por lote e o limite de GB por solicitação retornado pela carteira. O recebimento da solicitação ainda não confirma a entrega.

Abastecer um cliente existente

Consulte o valor informando o ID e o produto do seu cliente:

{
  "action": "cash_quote",
  "kind": "topup",
  "customer": "ID_DO_SEU_CLIENTE",
  "product": "premium",
  "gb": 1
}

Depois da confirmação do responsável, envie com a permissão transfers:create:

{
  "action": "cash_topup",
  "customer": "ID_DO_SEU_CLIENTE",
  "gb": 1,
  "key": "recarga-exemplo-00000001",
  "quote_token": "TOKEN_RETORNADO_NA_COTACAO"
}

As quatro ações acima usam POST em /api/v3/reseller.php, com Authorization e JSON como nos exemplos anteriores. A condição comercial é calculada pelo servidor: vale o maior desconto aplicável sobre o preço inicial, uma única vez. Se o preço mudar antes da confirmação, consulte uma nova cotação. Uma solicitação já reservada mantém o preço confirmado.

Use GET ?action=cash_ledger para o extrato em centavos, com ledger:read. GET ?action=ledger continua exibindo os créditos anteriores em unidades de GB. PIX continua disponível apenas pelo painel. As regras de referência única, acompanhamento e isolamento de conta valem para ambas as carteiras.

Créditos anteriores em GB: carteira e produtos

As ações antigas create_batch e topup usam exclusivamente os créditos anteriores em GB. Elas não descontam dinheiro da carteira em reais. Esses créditos mantêm a conversão original nos três produtos. Os valores available_units, reserved_units e cost_units são inteiros: 1.000 unidades = 1 GB da carteira.

ProdutoIdentificadorCusto de 1 GB do produto
Datacenter Premiumpremium500 unidades · 0,5 GB da carteira
Residencialresidential1.000 unidades · 1 GB da carteira
Móvelmobile2.000 unidades · 2 GB da carteira

O saldo necessário fica reservado antes de preparar os clientes. O sistema libera as credenciais somente após confirmar o saldo inicial.

Países, estados e cidades

Consulte as localidades disponíveis para cada produto antes de montar a seleção de localização em sua integração. Esta consulta usa a mesma chave de revenda, com a permissão subusers:read. A conta precisa estar aprovada; não é necessário ter saldo ou um cliente criado.

Use GET com action=locations. Informe product: residential, premium (Datacenter) ou mobile. O identificador datacenter também é aceito e retorna product=premium, mantendo o padrão da API de revenda.

ConsultalevelFiltros
PaísescountriesSomente product
Estados de um paísstatesproduct e country
Cidades de um paíscitiesproduct e country; state é opcional

1. Países do produto Residencial:

GET /api/v3/reseller.php?action=locations&product=residential&level=countries
Authorization: Bearer SUA_CHAVE_MARKETBET

2. Estados do Brasil: use o code do país retornado no primeiro passo.

GET /api/v3/reseller.php?action=locations&product=residential&level=states&country=br
Authorization: Bearer SUA_CHAVE_MARKETBET

3. Todas as cidades do Brasil:

GET /api/v3/reseller.php?action=locations&product=residential&level=cities&country=br
Authorization: Bearer SUA_CHAVE_MARKETBET

Para restringir as cidades a um estado, acrescente &state=CODIGO_DO_ESTADO, usando exatamente o code retornado em states. Não use o nome exibido nem suponha que o código seja a sigla da UF. Mantenha o mesmo produto e país ao avançar entre as consultas.

Exemplo com cURL:

curl --get 'https://reseller.marketbet.com.br/api/v3/reseller.php' \
  --data-urlencode 'action=locations' \
  --data-urlencode 'product=premium' \
  --data-urlencode 'level=countries' \
  -H 'Authorization: Bearer SUA_CHAVE_MARKETBET'

Formato de resposta ilustrativo, reduzido a um item:

{
  "success": true,
  "data": {
    "product": "residential",
    "level": "countries",
    "country": null,
    "state": null,
    "items": [{"name": "Brasil", "code": "br"}],
    "total": 1
  }
}

items contém a lista completa da consulta e total informa a quantidade retornada; esta rota não usa paginação. Use name para exibir e code como filtro da próxima consulta. Uma lista vazia é válida. A disponibilidade pode variar entre os produtos.

Limite específico: 12 consultas por minuto por conta, somadas entre produtos e níveis, além dos limites gerais da API e da capacidade de consulta ao fornecedor. Ao receber 429, respeite Retry-After. Não consulte a lista a cada tecla digitada; reutilize a resposta enquanto o usuário seleciona a localização.

401 api_unauthorized indica chave inválida, revogada ou sem subusers:read; 422 invalid_locations indica produto, nível ou filtros inválidos; 503 locations_unavailable indica indisponibilidade temporária da consulta. A rota retorna apenas nomes e códigos de localidades. Não cria subusuários, não altera proxies nem movimenta saldo.

Créditos anteriores: criar clientes em GB

POST /api/v3/reseller.php
Authorization: Bearer SUA_CHAVE_MARKETBET
Content-Type: application/json

{
  "action": "create_batch",
  "labels": [
    "Cliente 01",
    "Cliente 02"
  ],
  "product": "residential",
  "gb": 1,
  "key": "lote-clientes-20260907-0001"
}

Permissão: subusers:create. Envie entre 1 e 10 nomes. gb é a quantidade inteira de GB de cada cliente, a partir de 1. Todos os clientes do lote usam o mesmo produto. O exemplo reserva 2 GB da carteira.

A resposta informa a referência do lote, os clientes e as operações. Uma solicitação aceita ainda está em processamento. Consulte a lista até o cliente estar disponível antes de buscar suas credenciais.

2. Consulte seus clientes e credenciais

POST /api/v3/reseller.php
Authorization: Bearer SUA_CHAVE_MARKETBET
Content-Type: application/json

{
  "action": "customers",
  "term": "Cliente 01"
}

Permissão: subusers:read. Use {"action":"customers","term":""} para listar. A pesquisa aceita nome, usuário, ID e senha completa. Envie a pesquisa no corpo da requisição. Nunca coloque senhas na URL ou nos registros da sua aplicação.

As listas retornam items e next_before. Para a próxima página, envie before com o valor recebido, mantendo o mesmo termo. O saldo possui um horário de atualização; uma leitura antiga não confirma falha de transferência.

POST /api/v3/reseller.php
Authorization: Bearer SUA_CHAVE_MARKETBET
Content-Type: application/json

{
  "action": "credentials",
  "customer": "ID_DO_SEU_CLIENTE"
}

Para clientes disponíveis, a resposta contém username, password e as proxies completas proxy_rotating (porta 823) e proxy_fixed (porta 11000). O campo proxy mantém o formato rotativo para compatibilidade. Consulte as credenciais somente quando precisar exibi-las ou entregá-las ao cliente.

Créditos anteriores: abastecer em GB

POST /api/v3/reseller.php
Authorization: Bearer SUA_CHAVE_MARKETBET
Content-Type: application/json

{
  "action": "topup",
  "customer": "ID_DO_SEU_CLIENTE",
  "gb": 2,
  "key": "recarga-cliente-20260907-0001"
}

Permissão: transfers:create. O cliente mantém seu produto. gb é a quantidade inteira do produto, a partir de 1. O custo é descontado da sua carteira conforme a tabela acima.

Referência única e tentativas

Gere e guarde uma key antes de enviar cada criação ou transferência. Use de 16 a 80 caracteres: letras, números, hífen ou sublinhado. Cada nova operação recebe uma nova referência.

Se a conexão cair, consulte ou repita a mesma solicitação com a mesma referência e os mesmos dados. Não troque a referência para tentar acelerar ou substituir uma solicitação ainda em andamento. Uma confirmação de recebimento não é confirmação de entrega dos GB.

GET /api/v3/reseller.php?action=operations
Authorization: Bearer SUA_CHAVE_MARKETBET

Permissão: transfers:read. Acompanhe as referências em items. completed confirma a conclusão. Solicitações em processamento ou conferência devem continuar sendo acompanhadas. Informe a referência ao suporte se precisar de ajuda.

Consultas de carteira e extrato

ConsultaPermissãoResultado
GET ?action=walletledger:readSaldo disponível e reservado
GET ?action=ledgerledger:readExtrato dos créditos anteriores em GB
GET ?action=operationstransfers:readCadastros e transferências

O extrato separa variação do saldo disponível e da reserva. Nas listas, use before com o next_before recebido para continuar a consulta.

As recargas por PIX e a gestão de chaves são feitas pelo painel. Uma chave de integração acessa somente a conta à qual pertence e as permissões escolhidas.

Use as consultas com moderação

Para acompanhar operações, aguarde pelo menos 30 segundos entre consultas. Se receber 429, reduza a frequência e aguarde antes de consultar novamente. Guarde as referências das operações em seu sistema e evite recarregar toda a lista a cada cliente.

Em caso de erro ou demora, preserve a referência original. Não envie cadastros ou transferências novamente com outra referência.

Resgate todo o saldo de um cliente

O resgate zera o saldo do subusuário. Somente a parte inteira dos GB do produto volta à carteira, na moeda e no custo da compra original. A fração inferior a 1 GB é descartada definitivamente. Clientes com menos de 1 GB não podem solicitar resgate. Interrompa o uso da proxy antes da confirmação.

Primeiro consulte a estimativa, com subusers:read:

POST /api/v3/reseller.php
Authorization: Bearer SUA_CHAVE_MARKETBET
Content-Type: application/json

{
  "action": "return_quote",
  "customer": "ID_DO_SEU_CLIENTE"
}

A resposta inclui refund_preview.cents (reais em centavos), refund_preview.legacy_units (créditos anteriores), return_gb, fraction_bytes, observed_at e quote_token, válido por dez minutos. Exiba o valor, a perda de fração e peça confirmação explícita ao titular.

Para enviar, a chave precisa da permissão adicional balances:return. Chaves existentes não recebem essa permissão automaticamente.

POST /api/v3/reseller.php
Authorization: Bearer SUA_CHAVE_MARKETBET
Content-Type: application/json

{
  "action": "return_balance",
  "customer": "ID_DO_SEU_CLIENTE",
  "quote_token": "TOKEN_DA_ESTIMATIVA",
  "loss_accepted": true,
  "key": "resgate-cliente-20260908-0001"
}

Guarde a mesma chave e o mesmo token para recuperar uma resposta perdida. Não envie uma chave nova para repetir uma tentativa incerta. Consulte attempt ou operations. A solicitação retorna return_queued; a carteira recebe apenas o valor de origem efetivamente confirmado. O consumo durante o processamento pode reduzir a devolução.

Na conclusão, confira returned_cents, returned_gb, returned_units e fraction_lost_bytes. return_cancelled indica cancelamento antes da retirada. review exige conferência administrativa; a retirada não é repetida. Não há resgate parcial nem valor fracionado enviado pela integração.

Se receber route_not_found

Confira o endereço exato /api/v3/reseller.php, o método e a posição de action. As ações customers, credentials, create_batch, topup, return_quote e return_balance usam POST com action no JSON. Elas não são consultas GET.

Adicionar saldo ou gerar outra chave não corrige uma chamada cujo método ou ação não foi reconhecido. Após corrigir o formato, verifique as permissões da chave e os campos exigidos. Só solicite criações e transferências após concluir o teste de consulta; preserve a referência key de cada operação.

Para o suporte, envie método, URL, código HTTP e error.code. Oculte a chave API, senhas de proxies e dados pessoais. Não envie o cabeçalho Authorization.