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 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: se a pasta já existir, devolve a existente — pode chamar sempre antes de subir.
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": "…" }
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 o botão Enviar mensagem (Messenger) no post — só imagens |
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();
GET/api/accounts
Lista os perfis conectados e suas páginas — use para descobrir perfilId e paginaId.
[
{
"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 = post com o botão Enviar mensagem (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 |
DEL/api/posts/:id | Cancela um post agendado |
PUT/api/pastas/:id | Renomeia pasta · DEL exclui (?apagarMidias=1 apaga o conteúdo) |
GET/api/status | Contadores gerais (páginas, agendados, publicados, erros) |
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).