API de Redes Sociais,
Simples e Segura.
Publique e agende conteúdo no Facebook, Instagram, YouTube e TikTok com uma única API. Segurança HMAC robusta para proteger suas requisições.
Atualizado: 2025-08-20 20:31 UTC
Comece a Usar em Minutos
Siga estes 3 passos para configurar e fazer sua primeira chamada na API.
URL Base da API (Endpoint)
https://social-api.meuapp.online/
Solicite sua API Key e Secret
Entre em contato conosco pelo WhatsApp para solicitar suas credenciais de acesso. Você receberá uma API Key (identificador) e um Secret (chave secreta) para autenticar suas requisições.
Solicitar Credenciais via WhatsAppVocê receberá algo como:
# Guarde estas chaves em um local seguro
API_KEY_ID = "cliente_exemplo_a1b2c3d4"
SECRET_HEX = "abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"
Conecte as Redes Sociais
Acesse as URLs de autorização (OAuth) no navegador para conectar as contas. Depois, atribua-as ao seu cliente no formulário de administração.
Teste a Autenticação HMAC
Faça uma chamada para o endpoint de "ping" enviando os cabeçalhos HMAC para garantir que sua assinatura está correta.
# Gere a assinatura e substitua
curl "{{base_url}}/v1/auth_ping" \
-H "X-Key-Id: {{key_id}}" \
-H "X-Timestamp: $(date +%s)" \
-H "X-Nonce: $(openssl rand -hex 12)" \
-H "X-Signature: "
Autenticação HMAC
Toda requisição segura deve conter os cabeçalhos: X-Key-Id, X-Timestamp, X-Nonce, e X-Signature.
$canonical = "$method\n$path\n$timestamp\n$nonce\n" . hash('sha256', $rawBody);
Para requisições multipart, use um hash de uma string vazia. Para JSON, use o corpo JSON bruto.
$signature = base64_encode(hash_hmac('sha256', $canonical, hex2bin($secret), true));
O segredo (secret) é o valor hexadecimal gerado no Passo 1. O resultado é enviado no header X-Signature.
Endpoints da API
Requisições Seguras (HMAC)
Estes endpoints são o núcleo da API e requerem uma assinatura HMAC válida em todos os cabeçalhos.
| Método | Rota | Descrição |
|---|---|---|
| GET | /v1/auth_ping | Valida a assinatura HMAC para testar as credenciais. |
| POST | /v1/posts | Cria uma nova tarefa de postagem (imediata ou agendada). |
| GET | /v1/get_task_result | Consulta o status e o resultado de uma tarefa via ?task_id=.... |
Autorização (OAuth)
Use estes endpoints a partir de um navegador para conectar as contas das redes sociais. Nenhuma autenticação HMAC é necessária aqui.
| Método | Rota | Descrição |
|---|---|---|
| GET | /v1/auth/facebook | Inicia o fluxo de autorização para Facebook e Instagram. |
| GET | /v1/auth/youtube | Inicia o fluxo de autorização para YouTube. |
| GET | /v1/auth/tiktok | Inicia o fluxo de autorização para TikTok. |
Exemplos de Uso
<?php
function hmacHeaders(string $method, string $path, string $rawBody=''): array {
$ts = (string) time();
$nonce = bin2hex(random_bytes(12));
$hash = hash('sha256', $rawBody);
$canonical = "$method\n$path\n$ts\n$nonce\n$hash";
$sig = base64_encode(hash_hmac('sha256', $canonical, hex2bin(getenv('SOCIALAPI_SECRET_HEX')), true));
return [
'X-Key-Id: ' . getenv('SOCIALAPI_KEY_ID'),
'X-Timestamp: ' . $ts,
'X-Nonce: ' . $nonce,
'X-Signature: ' . $sig,
];
}
<?php
$payload = json_encode([
'account' => 'radiogospelhd',
'account_ids' => ['facebook'],
'post_type' => 'image',
'text' => "Meu Post\n\nDescrição",
'media_urls' => ['https://.../image.jpg'],
'article_url' => 'https://example.com/artigo'
], JSON_UNESCAPED_UNICODE);
$headers = hmacHeaders('POST', '/v1/posts', $payload);
$headers[] = 'Content-Type: application/json';
$ch = curl_init('https://social-api.meuapp.online/v1/posts');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
<?php
$headers = hmacHeaders('POST', '/v1/posts', ''); // Corpo vazio para multipart
$fields = [
'media' => new CURLFile('/caminho/absoluto/video.mp4'),
'post_type' => 'video',
'text' => "Título do Vídeo\n\nDescrição completa.",
'account' => 'radiogospelhd',
'account_ids' => '["youtube"]', // JSON string para multipart
];
$ch = curl_init('https://social-api.meuapp.online/v1/posts');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $fields,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 600,
]);
echo curl_exec($ch);
curl "https://social-api.meuapp.online/v1/get_task_result?task_id=task_..."
{
"status": "complete",
"message": "Tarefa concluída.",
"data": {
"facebook": {
"status":"ok",
"id":"...",
"permalink":"..."
}
}
}
["facebook"]— Publica foto ou vídeo na Página do Facebook.["instagram"]— Publica vídeo como um Reel no Instagram.["youtube"]— Publica um vídeo comum no canal do YouTube.["tiktok"]— Publica um vídeo no TikTok (em modo sandbox:SELF_ONLY).
Perguntas Frequentes
Onde vejo os logs de erro detalhados?
Todos os erros e informações de postagens são registrados no arquivo post.log, localizado na raiz do projeto da API.
Qual a diferença entre agendado e publicado?
Se você enviar o parâmetro scheduled_time com uma data no futuro, a API do Facebook/Instagram aceitará o post e retornará um ID, mas o link permanente (permalink) só estará disponível após a publicação efetiva no horário agendado.