Get Chat History
curl --request GET \
--url https://api.jelou.ai/v1/external/messages/history/{botId} \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.jelou.ai/v1/external/messages/history/{botId}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.jelou.ai/v1/external/messages/history/{botId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.jelou.ai/v1/external/messages/history/{botId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.jelou.ai/v1/external/messages/history/{botId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.jelou.ai/v1/external/messages/history/{botId}")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jelou.ai/v1/external/messages/history/{botId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"pagination": {
"limit": 123,
"page": 123,
"total": 123,
"offset": 123,
"totalPages": 123
},
"_metadata": {},
"results": [
{
"recipient": {
"id": "<string>",
"names": "<string>"
},
"sender": {
"id": "<string>",
"name": "<string>",
"type": "<string>"
},
"messageId": "<string>",
"status": "<string>",
"bubble": {
"type": "<string>",
"text": "<string>",
"mediaUrl": "<string>"
},
"createdAt": "2023-11-07T05:31:56Z"
}
]
}{
"message": "<string>",
"statusMessage": "<string>",
"status": 123,
"error": {
"code": "<string>",
"key": "<string>",
"description": "<string>",
"developerMessages": {},
"clientMessages": {}
},
"validationError": {}
}{
"message": "<string>",
"statusMessage": "<string>",
"status": 123,
"error": {
"code": "<string>",
"key": "<string>",
"description": "<string>",
"developerMessages": {},
"clientMessages": {}
},
"validationError": {}
}{
"message": "<string>",
"statusMessage": "<string>",
"status": 123,
"error": {
"code": "<string>",
"key": "<string>",
"description": "<string>",
"developerMessages": {},
"clientMessages": {}
},
"validationError": {}
}Conversações
Histórico de chat
Consulte o histórico de mensagens de um canal
GET
/
v1
/
external
/
messages
/
history
/
{botId}
Get Chat History
curl --request GET \
--url https://api.jelou.ai/v1/external/messages/history/{botId} \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.jelou.ai/v1/external/messages/history/{botId}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.jelou.ai/v1/external/messages/history/{botId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.jelou.ai/v1/external/messages/history/{botId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.jelou.ai/v1/external/messages/history/{botId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.jelou.ai/v1/external/messages/history/{botId}")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jelou.ai/v1/external/messages/history/{botId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"pagination": {
"limit": 123,
"page": 123,
"total": 123,
"offset": 123,
"totalPages": 123
},
"_metadata": {},
"results": [
{
"recipient": {
"id": "<string>",
"names": "<string>"
},
"sender": {
"id": "<string>",
"name": "<string>",
"type": "<string>"
},
"messageId": "<string>",
"status": "<string>",
"bubble": {
"type": "<string>",
"text": "<string>",
"mediaUrl": "<string>"
},
"createdAt": "2023-11-07T05:31:56Z"
}
]
}{
"message": "<string>",
"statusMessage": "<string>",
"status": 123,
"error": {
"code": "<string>",
"key": "<string>",
"description": "<string>",
"developerMessages": {},
"clientMessages": {}
},
"validationError": {}
}{
"message": "<string>",
"statusMessage": "<string>",
"status": 123,
"error": {
"code": "<string>",
"key": "<string>",
"description": "<string>",
"developerMessages": {},
"clientMessages": {}
},
"validationError": {}
}{
"message": "<string>",
"statusMessage": "<string>",
"status": 123,
"error": {
"code": "<string>",
"key": "<string>",
"description": "<string>",
"developerMessages": {},
"clientMessages": {}
},
"validationError": {}
}Recupere o histórico de conversas de um canal para auditar interações, analisar métricas ou depurar fluxos. Este endpoint retorna mensagens enviadas e recebidas com suporte a paginação e filtros de tempo.
Endpoint
GET https://api.jelou.ai/v1/external/messages/history/{botId}
Parâmetros de Path
| Campo | Localização | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
| botId | Path | string | Sim | Identificador único do canal cujo histórico você deseja consultar. |
Parâmetros de Query
| Campo | Localização | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|---|
| limit | Query | integer | Não | 10 | Número de mensagens a solicitar. Máximo: 50. |
| page | Query | integer | Não | 1 | Número da página. |
| startAt | Query | date | Não | - | Data de início do intervalo a consultar. Formato ISO 8601. |
| endAt | Query | date | Não | - | Data de término do intervalo a consultar. Formato ISO 8601. |
| clientId | Query | string | Não | - | Filtra o histórico por um clientId específico associado às suas integrações. |
| messageId | Query | string | Não | - | Retorna a conversa que contém a mensagem com este identificador. |
Se você omitir campos opcionais, a API aplicará valores padrão para entregar a primeira página com as mensagens mais recentes.
Exemplos de Requisição
Consulta básica
curl --request GET \
--url 'https://api.jelou.ai/v1/external/messages/history/BOT_ID?limit=10&page=1' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}'
Com filtro de data
curl --request GET \
--url 'https://api.jelou.ai/v1/external/messages/history/BOT_ID?limit=20&page=1&startAt=2025-01-01T00:00:00.000Z&endAt=2025-01-31T23:59:59.000Z' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}'
Com filtro de cliente
curl --request GET \
--url 'https://api.jelou.ai/v1/external/messages/history/BOT_ID?limit=10&page=1&clientId=CLIENT_ID' \
--header 'Authorization: Basic {{Base64EncodedUsername:Password}}'
Respostas
200 - Resposta bem-sucedida
200 - Resposta bem-sucedida
{
"pagination": {
"limit": 10,
"page": 1,
"total": 1,
"offset": 0,
"totalPages": 1
},
"_metadata": {},
"results": [
{
"recipient": {
"id": "RECIPIENT_ID",
"names": "Example Customer"
},
"sender": {
"id": "BOT_ID",
"name": "Meu Canal",
"type": "WhatsApp"
},
"by": "bot",
"messageId": "msg-12345-67890-4a38-abcde-fghij",
"status": "DELIVERED_USER",
"bubble": {
"type": "TEXT",
"text": "Hello, welcome to Jelou"
},
"createdAt": "2025-01-15T10:30:00.000Z"
}
]
}
401 - Não Autorizado
401 - Não Autorizado
{
"message": "Authentication failed"
}
404 - Não Encontrado
404 - Não Encontrado
{
"message": ["The Channel could not be found at the moment."],
"statusMessage": "failed",
"status": 0,
"error": {
"code": "E1019",
"key": "BOT_NOT_FOUND",
"description": "Error to be thrown when trying to get a channel.",
"developerMessages": {
"es": "El botId no se encuentra en la base de datos o ha sido eliminado.",
"en": "The botId is not found in the database or has been deleted."
},
"clientMessages": {
"es": "El canal no se pudo encontrar por el momento.",
"en": "The Channel could not be found at the moment."
}
}
}
422 - Entidade não processável
422 - Entidade não processável
{
"message": ["The values entered are not correct."],
"statusMessage": "failed",
"status": 0,
"error": {
"code": "E0422",
"key": "VALIDATOR_ERROR",
"description": "Error to be thrown when cannot process request because of incoming values",
"developerMessages": {
"es": "Los valores del request no son correctos para ser procesados.",
"en": "The request values are not correct for processing."
},
"clientMessages": {
"es": "Los valores ingresados no son correctos.",
"en": "The values entered are not correct."
}
},
"validationError": {
"startAt": [
{
"es": "el campo startAt debe ser una fecha",
"en": "the startAt field must be a Date"
}
]
}
}
500 - Erro Interno do Servidor
500 - Erro Interno do Servidor
{
"message": ["We are having trouble processing your request. Please try again later."],
"statusMessage": "failed",
"status": 0,
"error": {
"code": "E0000",
"key": "UNKNOWN_ERROR",
"description": "Error to be thrown when it couldn't be determined the reason of failure",
"developerMessages": {
"es": "Error inesperado ocurrido, revisar logs.",
"en": "Unexpected error occurred, check logs."
},
"clientMessages": {
"es": "Estamos teniendo problemas procesando la solicitud. Por favor intenta más tarde.",
"en": "We are having trouble processing your request. Please try again later."
}
}
}
Detalhes da Resposta
Objeto pagination
| Campo | Tipo | Descrição |
|---|---|---|
| limit | integer | Número de registros por página. |
| page | integer | Página atual. |
| total | integer | Total de registros. |
| offset | integer | Deslocamento a partir do início. |
| totalPages | integer | Total de páginas disponíveis. |
Objeto results
| Campo | Tipo | Descrição |
|---|---|---|
| recipient | object | Informações do destinatário (id, names). |
| sender | object | Informações do remetente (id, name, type). |
| by | string | Indica quem enviou a mensagem: bot ou user. |
| messageId | string | Identificador único da mensagem. |
| status | string | Status da mensagem: DELIVERED_USER, DELIVERED_CHANNEL, READ, etc. |
| bubble | object | Conteúdo da mensagem (type, text, mediaUrl, etc.). |
| createdAt | date | Data de criação da mensagem no formato ISO 8601. |
Limites e restrições
Limites importantes:
- limit: O valor máximo permitido é
50 - page: Deve ser um inteiro positivo
- startAt/endAt: Devem estar no formato ISO 8601 (ex.:
2025-01-15T10:30:00.000Z)
Autorizações
Basic authentication using Base64 encoded clientId:clientSecret
Parâmetros de caminho
Parâmetros de consulta
Intervalo obrigatório:
x <= 50Esta página foi útil?
⌘I