curl --request POST \
--url https://app.1to1.ai/api/v1/public/{slug}/conversation/notes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"conversation": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_user_id": "<string>",
"username": "@mariana.lopez",
"phone": "+52 55 1234 5678"
},
"note": "Cliente pidió seguimiento en 2 semanas (post-vacaciones)."
}
'import requests
url = "https://app.1to1.ai/api/v1/public/{slug}/conversation/notes"
payload = {
"conversation": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_user_id": "<string>",
"username": "@mariana.lopez",
"phone": "+52 55 1234 5678"
},
"note": "Cliente pidió seguimiento en 2 semanas (post-vacaciones)."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
conversation: {
uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
whatsapp_user_id: '<string>',
username: '@mariana.lopez',
phone: '+52 55 1234 5678'
},
note: 'Cliente pidió seguimiento en 2 semanas (post-vacaciones).'
})
};
fetch('https://app.1to1.ai/api/v1/public/{slug}/conversation/notes', 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://app.1to1.ai/api/v1/public/{slug}/conversation/notes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'conversation' => [
'uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'whatsapp_user_id' => '<string>',
'username' => '@mariana.lopez',
'phone' => '+52 55 1234 5678'
],
'note' => 'Cliente pidió seguimiento en 2 semanas (post-vacaciones).'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.1to1.ai/api/v1/public/{slug}/conversation/notes"
payload := strings.NewReader("{\n \"conversation\": {\n \"uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"whatsapp_user_id\": \"<string>\",\n \"username\": \"@mariana.lopez\",\n \"phone\": \"+52 55 1234 5678\"\n },\n \"note\": \"Cliente pidió seguimiento en 2 semanas (post-vacaciones).\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.1to1.ai/api/v1/public/{slug}/conversation/notes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"conversation\": {\n \"uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"whatsapp_user_id\": \"<string>\",\n \"username\": \"@mariana.lopez\",\n \"phone\": \"+52 55 1234 5678\"\n },\n \"note\": \"Cliente pidió seguimiento en 2 semanas (post-vacaciones).\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.1to1.ai/api/v1/public/{slug}/conversation/notes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"conversation\": {\n \"uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"whatsapp_user_id\": \"<string>\",\n \"username\": \"@mariana.lopez\",\n \"phone\": \"+52 55 1234 5678\"\n },\n \"note\": \"Cliente pidió seguimiento en 2 semanas (post-vacaciones).\"\n}"
response = http.request(request)
puts response.read_body{
"conversation": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"note": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z"
}
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}Agregar nota de contexto
Agrega una nota de contexto al timeline de la conversación. Útil para que el CRM externo deje registro de información que quieres que el equipo humano (o el AI downstream) considere al retomar el chat — ej. “cliente pidió seguimiento post-vacaciones”, “contactó por falla de pagos”, etc.
- La nota no se envía al contacto — solo vive en el timeline interno.
- Autor del evento:
api_token(la UI del dashboard puede mostrar un badge “vía API”). - Límite: 5000 caracteres.
curl --request POST \
--url https://app.1to1.ai/api/v1/public/{slug}/conversation/notes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"conversation": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_user_id": "<string>",
"username": "@mariana.lopez",
"phone": "+52 55 1234 5678"
},
"note": "Cliente pidió seguimiento en 2 semanas (post-vacaciones)."
}
'import requests
url = "https://app.1to1.ai/api/v1/public/{slug}/conversation/notes"
payload = {
"conversation": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_user_id": "<string>",
"username": "@mariana.lopez",
"phone": "+52 55 1234 5678"
},
"note": "Cliente pidió seguimiento en 2 semanas (post-vacaciones)."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
conversation: {
uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
whatsapp_user_id: '<string>',
username: '@mariana.lopez',
phone: '+52 55 1234 5678'
},
note: 'Cliente pidió seguimiento en 2 semanas (post-vacaciones).'
})
};
fetch('https://app.1to1.ai/api/v1/public/{slug}/conversation/notes', 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://app.1to1.ai/api/v1/public/{slug}/conversation/notes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'conversation' => [
'uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'whatsapp_user_id' => '<string>',
'username' => '@mariana.lopez',
'phone' => '+52 55 1234 5678'
],
'note' => 'Cliente pidió seguimiento en 2 semanas (post-vacaciones).'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.1to1.ai/api/v1/public/{slug}/conversation/notes"
payload := strings.NewReader("{\n \"conversation\": {\n \"uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"whatsapp_user_id\": \"<string>\",\n \"username\": \"@mariana.lopez\",\n \"phone\": \"+52 55 1234 5678\"\n },\n \"note\": \"Cliente pidió seguimiento en 2 semanas (post-vacaciones).\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.1to1.ai/api/v1/public/{slug}/conversation/notes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"conversation\": {\n \"uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"whatsapp_user_id\": \"<string>\",\n \"username\": \"@mariana.lopez\",\n \"phone\": \"+52 55 1234 5678\"\n },\n \"note\": \"Cliente pidió seguimiento en 2 semanas (post-vacaciones).\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.1to1.ai/api/v1/public/{slug}/conversation/notes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"conversation\": {\n \"uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"whatsapp_user_id\": \"<string>\",\n \"username\": \"@mariana.lopez\",\n \"phone\": \"+52 55 1234 5678\"\n },\n \"note\": \"Cliente pidió seguimiento en 2 semanas (post-vacaciones).\"\n}"
response = http.request(request)
puts response.read_body{
"conversation": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"note": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z"
}
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}{
"code": "INVALID_API_TOKEN",
"message": "The provided API token is invalid or has been revoked. Generate a new one in Settings → API Token."
}Autorizaciones
API token emitido desde Settings → API Token del dashboard 1TO1 AI. Enviar en header Authorization: Bearer sk_1to1_...
Parámetros de ruta
Slug del business, case-insensitive. Debe coincidir con el business del token.
"acme"
Cuerpo
Identificador de la conversación — exactamente UNO de los cuatro campos debe venir. Orden de resolución: uuid > whatsapp_user_id > username > phone. El lookup filtra por el business del token (defense in depth cross-tenant). Resolver por phone o username puede devolver 409 (PHONE_NUMBER_AMBIGUOUS / USERNAME_AMBIGUOUS) cuando varios contactos comparten el identificador — aplica a cualquier endpoint que acepte esta referencia.
Show child attributes
Show child attributes
Texto libre de la nota de contexto. Se guarda en el timeline y no se envía al contacto.
1 - 5000"Cliente pidió seguimiento en 2 semanas (post-vacaciones)."