✈️
Don WebsendDOCUMENTAÇÃO DA API
← Voltar ao dashboard

API do Don Websend

API REST para integrações — feita para o Don Poster criar pastas na galeria, subir imagens/reels das páginas e agendar as postagens automaticamente.

Base URL

https://donwebsend.marketfb.com

Autenticação

Todas as chamadas em /api usam o cabeçalho X-API-Key. A chave fica no dashboard em Configurações → API & Tokens.

X-API-Key: SUA_API_KEY
⚠️ A chave dá controle total do sistema. Não coloque em código público e regenere se vazar.

Fluxo recomendado para o Don Poster

1️⃣ Cria (ou garante) a pasta da página → 2️⃣ sobe as mídias para a pasta → 3️⃣ (opcional) agenda direto. Se preferir só abastecer a galeria, as Campanhas do dashboard cuidam do agendamento usando a pasta.

POST/api/pastas

Cria uma pasta na galeria. Idempotente por nome no mesmo nível: se a pasta já existir, devolve a existente — pode chamar sempre antes de subir. Para criar uma subpasta, envie o campo opcional pastaPaiId com o id da pasta superior.

curl -X POST "{BASE}/api/pastas" \
  -H "X-API-Key: {KEY}" -H "Content-Type: application/json" \
  -d '{"nome": "KELLY MOREIRA IMAGENS"}'

// → { "id": "9b1c…", "nome": "KELLY MOREIRA IMAGENS", "criadoEm": "…" }
curl -X POST "{BASE}/api/pastas" \
  -H "X-API-Key: {KEY}" -H "Content-Type: application/json" \
  -d '{"nome": "REELS", "pastaPaiId": "ID-DA-PASTA-SUPERIOR"}'

GET/api/pastas

Lista as pastas com a contagem de itens.

POST/api/import

Sobe uma mídia (imagem ou reel) para a galeria — e, opcionalmente, já agenda o post.

CampoTipoDescrição
nomeArquivostring · obrigatórioNome com extensão: .jpg, .jpeg, .png, .webp (imagem) ou .mp4, .mov (reel)
conteudoBase64string · obrigatórioConteúdo do arquivo em base64 (sem o prefixo data:)
pastastringNome da pasta da galeria (cria se não existir)
pastaIdstringAlternativa: id de uma pasta existente
legendastringLegenda padrão da mídia
tipostringimagem ou reel (padrão: detecta pela extensão)
perfilId + paginaId + agendadoParaopcionaisSe os três vierem, o post já sai agendado (ISO 8601, ex.: 2026-07-10T09:00:00)
agendamentoNativobooleanAgenda direto no Facebook (só imagens)
botaoMensagembooleanAdiciona um link m.me (Messenger) clicável no fim da legenda — só imagens (o botão nativo "Enviar mensagem" só existe via anúncio Click-to-Messenger)

Exemplo em Node.js (upload para a pasta da página):

const fs = require('fs');

const resposta = await fetch('{BASE}/api/import', {
  method: 'POST',
  headers: { 'X-API-Key': '{KEY}', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    nomeArquivo: 'kelly-01.jpg',
    conteudoBase64: fs.readFileSync('kelly-01.jpg').toString('base64'),
    pasta: 'KELLY MOREIRA IMAGENS',
    legenda: 'Bom dia! ☀️'
  })
});
const { midia, post } = await resposta.json();

A resposta preserva os dados da mídia e inclui o endereço público permanente:

{
  "midia": {
    "id": "ID-DA-MIDIA",
    "arquivo": "ID-DA-MIDIA.mp4",
    "urlPublica": "https://donwebsend.marketfb.com/public-media/ID-DA-MIDIA.mp4"
  },
  "post": null
}

GET/public-media/:arquivo

/media/:arquivo continua sendo a rota privada usada pelo painel e exige autenticação. /public-media/:arquivo é o link público de leitura para incorporar a mídia em sites externos. Ele não usa chave de API, aceita GET, HEAD e reprodução parcial de vídeos por HTTP Range.

Use somente a urlPublica devolvida pela API. Nunca coloque a chave da API no HTML, na URL ou no JavaScript do site.

Exemplo de incorporação no WordPress:

<video controls preload="metadata" playsinline>
  <source
    src="https://donwebsend.marketfb.com/public-media/ID-DA-MIDIA.mp4"
    type="video/mp4"
  >
</video>

GET/api/accounts

Lista os perfis conectados e suas páginas — use para descobrir perfilId e paginaId.

🔑 Chamando com a sua X-API-Key (integrações como o Don Poster), a resposta traz os perfis e páginas do Gerente ext — os que você conectou pela extensão — e é de lá que a sincronização puxa. Cada página já vem com "conectada": true. As páginas ignoradas ficam de fora e uma página que aparece em mais de um perfil vem uma vez só (fica com o dono/supervisor). O painel web (login por sessão) continua vendo os perfis do app, sem mudança.
[
  {
    "id": "10000000000001",          // ← perfilId
    "nome": "Kelly Moreira",
    "paginas": [
      { "id": "11234352375253", "nome": "Kelly Moreira", "conectada": true }   // ← paginaId
    ]
  }
]
✅ Só páginas com "conectada": true aceitam agendamento (conecte na aba Conexões).

POST/api/posts

Agenda um post com uma mídia que já está na galeria.

CampoDescrição
perfilId / paginaIdDestino (de /api/accounts)
midiaIdId da mídia (retornado no /api/import ou em GET /api/media)
legendaTexto do post (vazio = legenda da mídia)
agendadoParaData/hora ISO 8601
agendamentoNativotrue = agenda no próprio Facebook (só imagens)
botaoMensagemtrue = adiciona link m.me clicável na legenda (só imagens)

Outros endpoints

EndpointDescrição
GET/api/media?pasta=<id>Lista mídias (filtro por pasta; pasta=raiz = sem pasta)
GET/api/posts?status=agendadoLista posts (filtros: status, inicio, fim)
POST/api/posts/:id/publicarPublica um post imediatamente
GET/api/posts/:id/insightsInsights do post publicado (visualizações, interações, curtidas, comentários, compartilhamentos, cliques). ?forcar=1 ignora o cache
DEL/api/posts/:idCancela um post agendado
PUT/api/pastas/:idRenomeia pasta · DEL exclui (?apagarMidias=1 apaga o conteúdo)
POST/api/pastas/:id/compartilharSó o dono: body {compartilhada:true|false} deixa a pasta visível (só leitura) para todas as outras contas
GET/api/statusContadores gerais (páginas, agendados, publicados, erros)
GET/api/tagsCategorias de páginas · POST cria, DEL remove
POST/api/pages/:paginaId/tagsDefine as categorias de uma página (body {tags:[id]})
POST/api/pages/:paginaId/pastaVincula a pasta de mídia da página (body {pastaId})
GET/api/legendasPastas de legendas · POST cria {nome,modo}, /:id/itens adiciona {texto}

Modo local: pasta imports/

Rodando na mesma máquina, o Don Poster também pode soltar arquivos em imports/ com um manifesto JSON (varredura a cada 30 s):

// imports/lote-kelly.json
[
  { "arquivo": "kelly-01.jpg", "pasta": "KELLY MOREIRA IMAGENS", "legenda": "Bom dia! ☀️" },
  { "arquivo": "kelly-reel-01.mp4", "pasta": "KELLY MOREIRA REELS", "tipo": "reel",
    "perfilId": "10000000000001", "paginaId": "11234352375253",
    "agendadoPara": "2026-07-10T19:00:00" }
]

Erros

Respostas de erro vêm como { "erro": "mensagem" } com status 400 (dados inválidos) ou 401 (sem autenticação — confira o X-API-Key).