Comentários de todas as redes
GET /v1/comments escopo read
Comentários de todas as redes juntos, de TODAS as contas ativas de cada rede (cada comentário traz channel; channel filtra uma conta; uma conta que falha vai para errors e as outras respondem).
Cabeçalhos
Authorization: Bearer praeko_… e X-Praeko-Contract: en. Sempre envie os dois.Alias antigo em português (continua respondendo, marcado como obsoleto): /v1/comentarios.
Parâmetros
| Nome | Onde | Descrição |
|---|---|---|
network |
consulta | Limita a uma rede (all junta todas). Valores: all, youtube, instagram. |
channel |
consulta | Id da conta quando a rede tem várias (de GET /v1/channels). Sem ele, o canal padrão. |
Exemplo
curl "https://praeko.app/v1/comments" \
-H "Authorization: Bearer $PRAEKO_KEY" \
-H "X-Praeko-Contract: en"const res = await fetch("https://praeko.app/v1/comments", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.PRAEKO_KEY}`,
"X-Praeko-Contract": "en",
},
});
console.log(res.status, await res.json());import { Praeko } from "@praeko/sdk";
const praeko = new Praeko({ url: "https://praeko.app", key: process.env.PRAEKO_KEY });
const resultado = await praeko.community.comments();
console.log(resultado);import os
import requests
resp = requests.get(
"https://praeko.app/v1/comments",
headers={
"Authorization": f"Bearer {os.environ['PRAEKO_KEY']}",
"X-Praeko-Contract": "en",
},
)
print(resp.status_code, resp.json())<?php
$ch = curl_init('https://praeko.app/v1/comments');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("PRAEKO_KEY"),
'X-Praeko-Contract: en',
],
]);
$resposta = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), " ", $resposta, PHP_EOL;
curl_close($ch);package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://praeko.app/v1/comments", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("PRAEKO_KEY"))
req.Header.Set("X-Praeko-Contract", "en")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(resp.Status, string(out))
}require "net/http"
require "uri"
uri = URI("https://praeko.app/v1/comments")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer #{ENV['PRAEKO_KEY']}"
request["X-Praeko-Contract"] = "en"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
puts response.code, response.bodyusing System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Get, "https://praeko.app/v1/comments");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("PRAEKO_KEY"));
request.Headers.Add("X-Praeko-Contract", "en");
using var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://praeko.app/v1/comments"))
.header("Authorization", "Bearer " + System.getenv("PRAEKO_KEY"))
.header("X-Praeko-Contract", "en")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}http GET "https://praeko.app/v1/comments" \
"Authorization: Bearer $PRAEKO_KEY" \
"X-Praeko-Contract: en"SDK oficial para NodeInstale com
npm install @praeko/sdk (veja SDK e CLI).Sem SDK oficialExemplo com a biblioteca padrão (ou o cliente HTTP) da linguagem. Só o SDK de JavaScript existe.
Sem SDK oficialExemplo com a biblioteca padrão (ou o cliente HTTP) da linguagem. Só o SDK de JavaScript existe.
Sem SDK oficialExemplo com a biblioteca padrão (ou o cliente HTTP) da linguagem. Só o SDK de JavaScript existe.
Sem SDK oficialExemplo com a biblioteca padrão (ou o cliente HTTP) da linguagem. Só o SDK de JavaScript existe.
Sem SDK oficialExemplo com a biblioteca padrão (ou o cliente HTTP) da linguagem. Só o SDK de JavaScript existe.
Sem SDK oficialExemplo com a biblioteca padrão (ou o cliente HTTP) da linguagem. Só o SDK de JavaScript existe.
Resposta
| Status de sucesso | Quando |
|---|---|
200 |
Sucesso. |
{
"comments": [
{
"id": "17900123456789012",
"network": "instagram",
"mediaId": "17858893269123456",
"author": "tristao.dev",
"text": "Zika demais, qual banco você usa?",
"publishedAt": "2026-11-04T16:46:50+0000",
"likes": 1,
"fromOwner": false,
"hidden": false,
"replyCount": 1,
"answered": true,
"replies": [
{
"id": "17900123456789999",
"network": "instagram",
"mediaId": "17858893269123456",
"author": "dev.ocioso",
"text": "Valeu! É o D1 da Cloudflare.",
"publishedAt": "2026-11-04T19:00:00+0000",
"likes": 0,
"fromOwner": true,
"hidden": false
}
],
"media": {
"id": "17858893269123456",
"title": "Reel de segunda: o teste que falhava",
"thumbnail": "https://cdn.exemplo.com/reel.jpg",
"type": "reel",
"permalink": "https://www.instagram.com/reel/DAbCdEfGhIj/",
"publishedAt": "2026-11-04T10:57:00+0000"
},
"resolved": false
},
{
"id": "UgzK3n8vYb2Qx4mH7dB4AaABAg",
"videoId": "dQw4w9WgXcQ",
"author": "Ana",
"authorChannel": "UCxk3n8vYb2Qx4mH7dB4Aana",
"text": "O teste que só falhava na segunda me lembrou do meu último deploy.",
"publishedAt": "2026-11-06T09:12:40Z",
"likes": 3,
"fromOwner": false,
"replyCount": 0,
"answered": false,
"replies": [],
"resolved": false,
"network": "youtube",
"channel": "01KA3V0R5D8M2WQ7X4HT9NZ1BF"
}
],
"mediaItems": [
{
"id": "17858893269123456",
"network": "instagram",
"title": "Reel de segunda: o teste que falhava",
"caption": "Reel de segunda: o teste que falhava",
"type": "reel",
"thumbnail": "https://cdn.exemplo.com/reel.jpg",
"permalink": "https://www.instagram.com/reel/DAbCdEfGhIj/",
"publishedAt": "2026-11-04T10:57:00+0000",
"likes": 34,
"comments": 2,
"pending": 0,
"channel": "01KA3V1G4C7N9PXS2WQ6HM8TDZ"
}
],
"pending": 1,
"pendingByNetwork": {
"youtube": 1,
"instagram": 0
},
"pendingByChannel": {
"01KA3V0R5D8M2WQ7X4HT9NZ1BF": 1,
"01KA3V1G4C7N9PXS2WQ6HM8TDZ": 0
},
"errors": {}
}Reúne os comentários de todas as contas de cada rede. errors diz, por rede, qual conta não respondeu (as outras vêm normalmente).
Erros
Sem erros específicos desta rota além dos comuns.
Erros de qualquer rota
| Status | code | Quando |
|---|---|---|
| 401 | unauthorized |
Faltou o cabeçalho Authorization: Bearer …. |
| 401 | invalid_api_key |
A chave não existe. |
| 401 | revoked_api_key |
A chave foi revogada. |
| 401 | expired_api_key |
A chave expirou. |
| 403 | forbidden |
O escopo da chave não basta para esta rota (veja o selo de escopo). |
| 429 | rate_limited |
Passou do limite de requisições por minuto. |
O corpo de todo erro é { "error": { "code", "message", "details"? } }. Veja todos os códigos.
Testar
Testar
Entre para testarO teste ao vivo usa a sua chave e a sua conta. Para quem não entrou, fica desligado.
Dúvida ou erro nesta página? contato@praeko.appVer .md