Enviar áudio
curl --request POST \
--url https://cloud.datafyapi.com.br/ig/me/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recipient": {
"id": "1000000000000001"
},
"message": {
"attachment": {
"type": "audio",
"payload": {
"url": "https://exemplo.com/arquivo.m4a"
}
}
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
recipient: {id: '1000000000000001'},
message: {attachment: {type: 'audio', payload: {url: 'https://exemplo.com/arquivo.m4a'}}}
})
};
fetch('https://cloud.datafyapi.com.br/ig/me/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://cloud.datafyapi.com.br/ig/me/messages"
payload = {
"recipient": { "id": "1000000000000001" },
"message": { "attachment": {
"type": "audio",
"payload": { "url": "https://exemplo.com/arquivo.m4a" }
} }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"recipient_id": "1000000000000001",
"message_id": "aWdfZAG1faXRlbTo......"
}{
"error": {
"message": "Não foi possível encontrar o usuário solicitado.",
"type": "IGApiException",
"code": 100,
"error_subcode": 2534014,
"fbtrace_id": "AbCdEfGhIjK"
}
}{
"statusCode": 401,
"message": "Token inválido ou não encontrado."
}{
"statusCode": 402,
"message": "Assinatura inativa (status: canceled). Ative sua assinatura no painel para voltar a usar a API."
}Mensagens
Enviar áudio
Envie um áudio por link público.
POST
/
ig
/
me
/
messages
Enviar áudio
curl --request POST \
--url https://cloud.datafyapi.com.br/ig/me/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recipient": {
"id": "1000000000000001"
},
"message": {
"attachment": {
"type": "audio",
"payload": {
"url": "https://exemplo.com/arquivo.m4a"
}
}
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
recipient: {id: '1000000000000001'},
message: {attachment: {type: 'audio', payload: {url: 'https://exemplo.com/arquivo.m4a'}}}
})
};
fetch('https://cloud.datafyapi.com.br/ig/me/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://cloud.datafyapi.com.br/ig/me/messages"
payload = {
"recipient": { "id": "1000000000000001" },
"message": { "attachment": {
"type": "audio",
"payload": { "url": "https://exemplo.com/arquivo.m4a" }
} }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"recipient_id": "1000000000000001",
"message_id": "aWdfZAG1faXRlbTo......"
}{
"error": {
"message": "Não foi possível encontrar o usuário solicitado.",
"type": "IGApiException",
"code": 100,
"error_subcode": 2534014,
"fbtrace_id": "AbCdEfGhIjK"
}
}{
"statusCode": 401,
"message": "Token inválido ou não encontrado."
}{
"statusCode": 402,
"message": "Assinatura inativa (status: canceled). Ative sua assinatura no painel para voltar a usar a API."
}Envia um áudio para um contato com a janela de 24 horas aberta.
Quem baixa o arquivo é a Meta, a partir do endereço informado em
O
O áudio aparece como mensagem de voz na conversa.
payload.url. Não existe upload prévio nem ID de mídia: o áudio precisa estar hospedado em algum lugar acessível antes do envio.
Formatos aceitos
| Formato | Content-Type | Tamanho máximo |
|---|---|---|
| AAC | audio/aac | 25 MB |
| M4A e MP4 | audio/mp4 | 25 MB |
| WAV | audio/wav | 25 MB |
MP3 e OGG não são aceitos em áudio. São os dois formatos que mais aparecem em quem vem do WhatsApp, onde a mensagem de voz é OGG/Opus. Converta para AAC, M4A ou WAV antes de enviar.
Cabeçalho Content-Type
O formato é determinado pelo cabeçalhoContent-Type devolvido pelo servidor que hospeda o arquivo, não pela extensão informada na URL.
Um arquivo .m4a servido como audio/mp4a-latm é recusado; o mesmo arquivo servido como audio/mp4 é aceito. Em caso de recusa de um formato presente na tabela, verifique o cabeçalho:
curl -sI https://exemplo.com/arquivo.m4a | grep -i content-type
Formato recusado
{
"error": {
"message": "Esse formato de anexo não é aceito.",
"type": "IGApiException",
"code": 100,
"error_subcode": 2534080
}
}
error_subcode 2534080 indica formato recusado. O code 100 sem subcódigo indica falha ao baixar o arquivo.
A URL precisa ser pública e direta. Endereços que respondem com redirecionamento, exigem autenticação ou bloqueiam o download falham, mesmo abrindo normalmente no navegador.
Autorizações
Token do canal do Instagram, gerado no painel da Datafy. Formato: sk_live_xxx.
Corpo
application/json
Resposta
Aceito pela Meta. Não confirma a entrega.