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
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.
| Campo | Tipo | Descrição |
|---|---|---|
nomeArquivo | string · obrigatório | Nome com extensão: .jpg, .jpeg, .png, .webp (imagem) ou .mp4, .mov (reel) |
conteudoBase64 | string · obrigatório | Conteúdo do arquivo em base64 (sem o prefixo data:) |
pasta | string | Nome da pasta da galeria (cria se não existir) |
pastaId | string | Alternativa: id de uma pasta existente |
legenda | string | Legenda padrão da mídia |
tipo | string | imagem ou reel (padrão: detecta pela extensão) |
perfilId + paginaId + agendadoPara | opcionais | Se os três vierem, o post já sai agendado (ISO 8601, ex.: 2026-07-10T09:00:00) |
agendamentoNativo | boolean | Agenda direto no Facebook (só imagens) |
botaoMensagem | boolean | Adiciona 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.
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.
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
]
}
]
"conectada": true aceitam agendamento (conecte na aba Conexões).POST/api/posts
Agenda um post com uma mídia que já está na galeria.
| Campo | Descrição |
|---|---|
perfilId / paginaId | Destino (de /api/accounts) |
midiaId | Id da mídia (retornado no /api/import ou em GET /api/media) |
legenda | Texto do post (vazio = legenda da mídia) |
agendadoPara | Data/hora ISO 8601 |
agendamentoNativo | true = agenda no próprio Facebook (só imagens) |
botaoMensagem | true = adiciona link m.me clicável na legenda (só imagens) |
Outros endpoints
| Endpoint | Descrição |
|---|---|
GET/api/media?pasta=<id> | Lista mídias (filtro por pasta; pasta=raiz = sem pasta) |
GET/api/posts?status=agendado | Lista posts (filtros: status, inicio, fim) |
POST/api/posts/:id/publicar | Publica um post imediatamente |
GET/api/posts/:id/insights | Insights do post publicado (visualizações, interações, curtidas, comentários, compartilhamentos, cliques). ?forcar=1 ignora o cache |
DEL/api/posts/:id | Cancela um post agendado |
PUT/api/pastas/:id | Renomeia pasta · DEL exclui (?apagarMidias=1 apaga o conteúdo) |
POST/api/pastas/:id/compartilhar | Só o dono: body {compartilhada:true|false} deixa a pasta visível (só leitura) para todas as outras contas |
GET/api/status | Contadores gerais (páginas, agendados, publicados, erros) |
GET/api/tags | Categorias de páginas · POST cria, DEL remove |
POST/api/pages/:paginaId/tags | Define as categorias de uma página (body {tags:[id]}) |
POST/api/pages/:paginaId/pasta | Vincula a pasta de mídia da página (body {pastaId}) |
GET/api/legendas | Pastas 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).