Guía de inicio rápido de la Public API de Chatfuel
Crea un token de API personal, encuentra el ID de tu bot, crea un usuario virtual y haz tu primera consulta y mutación en la Public API en unos diez minutos.
Última actualización
La guía de inicio rápido te lleva de no tener ningún token a una llamada funcional a la Public API de Chatfuel en cinco pasos: crea tu token de API personal, encuentra el ID del bot, crea un usuario virtual, lee contactos con el token del usuario virtual y modifica un contacto. Necesitas el rol Admin en el bot, una terminal con curl y jq, y unos diez minutos.
Paso 1: Crea tu token de API personal
En el panel de Chatfuel, el token de API personal se llama CLI token. Solo lo usas para gestionar usuarios virtuales y otras configuraciones a nivel de cuenta.
- Inicia sesión en el panel de Chatfuel en panel.chatfuel.com.
- Abre el menú de la cuenta (tu nombre o avatar) y selecciona CLI token. La página también está disponible directamente en
https://panel.chatfuel.com/integration/auth/token. - Haz clic en Create token y luego en Copy token.
- Guarda el token de API personal en un gestor de contraseñas o en un almacén de secretos. Chatfuel muestra el token una sola vez.
Guarda el token de API personal en una variable de entorno para el resto de la guía:
export CHATFUEL_PERSONAL_TOKEN="paste-your-cli-token-here"Cualquiera que tenga el token de API personal puede actuar como tú en todos los bots a los que tienes acceso. Nunca lo subas a un repositorio ni lo pongas en código del lado del cliente.
Paso 2: Encuentra el ID de tu bot
Cada operación de la Public API funciona dentro de un bot. Lista los bots a los que tu cuenta tiene acceso con el token de API personal:
QUERY='query MyBots {
currentUser {
botsV2(first: 50) {
edges { node { id title } }
}
}
}'
jq -n --arg query "$QUERY" '{query: $query}' |
curl -s https://panel.chatfuel.com/graphql \
-H "Authorization: Bearer $CHATFUEL_PERSONAL_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @-El ID del bot también aparece en la barra de direcciones del panel: es la parte que sigue a /automation/ cuando hay un bot abierto. Guárdalo:
export BOT_ID="your-bot-id"Paso 3: Crea un usuario virtual
Un usuario virtual es un miembro de un bot que solo usa la API. Recibe su propio token, que usas para todas las demás llamadas. Créalo con la mutación createVirtualUser y el token de API personal:
QUERY='mutation CreateVirtualUser($botID: BotID!) {
createVirtualUser(
botID: $botID
name: "Quickstart integration"
role: { roleType: Editor, botPermissions: [] }
) {
member { id role { roleTypeV2 } user { id name accountType } }
authToken
}
}'
jq -n --arg query "$QUERY" --arg botID "$BOT_ID" \
'{query: $query, variables: {botID: $botID}}' |
curl -s https://panel.chatfuel.com/graphql \
-H "Authorization: Bearer $CHATFUEL_PERSONAL_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @-La respuesta contiene el nuevo miembro y su token:
{
"data": {
"createVirtualUser": {
"member": {
"id": "6f1c…",
"role": { "roleTypeV2": "Editor" },
"user": { "id": "6f1b…", "name": "Quickstart integration", "accountType": "Virtual" }
},
"authToken": "3c9e…"
}
}
}authToken se muestra solo en esta respuesta. Guárdalo junto con member.id, que necesitarás más adelante para regenerar el token o eliminar el usuario virtual:
export CHATFUEL_VIRTUAL_USER_TOKEN="paste-authToken-here"El rol puede ser Editor o Agent. Usuarios virtuales explica qué permite cada rol.
Paso 4: Lee contactos con el token del usuario virtual
Cambia al token del usuario virtual y lee el título del bot y los primeros diez contactos:
QUERY='query Contacts($botID: BotID!) {
bot(id: $botID) {
title
contactsConnection(platforms: [whatsapp, instagram, facebook, tiktok, widget], first: 10) {
edges { node { id name note updatedAt } }
pageInfo { hasNextPage endCursor }
}
}
}'
jq -n --arg query "$QUERY" --arg botID "$BOT_ID" \
'{query: $query, variables: {botID: $botID}}' |
curl -s https://panel.chatfuel.com/graphql \
-H "Authorization: Bearer $CHATFUEL_VIRTUAL_USER_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @-Para obtener la página siguiente, pasa pageInfo.endCursor como argumento after. Cómo hacer solicitudes muestra el patrón de paginación completo.
Paso 5: Modifica un contacto
Toma un id de contacto de la respuesta anterior y agrégale una nota con contactSetNote:
export CONTACT_ID="a-contact-id-from-step-4"
QUERY='mutation SetNote($contactID: ContactID!, $note: String) {
contactSetNote(id: $contactID, note: $note) { id note }
}'
jq -n --arg query "$QUERY" --arg contactID "$CONTACT_ID" --arg note "Synced from CRM" \
'{query: $query, variables: {contactID: $contactID, note: $note}}' |
curl -s https://panel.chatfuel.com/graphql \
-H "Authorization: Bearer $CHATFUEL_VIRTUAL_USER_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @-La nota ya aparece en la ficha del contacto en el panel, y el usuario virtual figura entre los miembros del equipo del bot con la etiqueta API. A partir de aquí, explora la referencia de contactos y la referencia de mensajería, o lee sobre tokens y autenticación antes de pasar a producción.
Problemas comunes
"NotEnoughPermissions" al crear un usuario virtual
createVirtualUser solo funciona con el token de API personal de un usuario que tiene el rol Admin en el bot. Esta mutación siempre rechaza el token de un usuario virtual, aunque el usuario virtual exista en el mismo bot.
"VirtualUserRoleNotAllowed"
El rol debe ser Editor o Agent. Los usuarios virtuales no pueden ser Admin ni tener un rol Custom.
"Unauthorized"
Falta el token, está mal escrito o fue revocado, o al encabezado le falta el prefijo Bearer . Envía Authorization: Bearer <token> y comprueba que el token no se haya regenerado mientras tanto.
Descripción general de la Public API de Chatfuel
La Public API de Chatfuel es una API GraphQL para gestionar bots, contactos, mensajes y flujos desde tu servidor con tokens de usuarios virtuales.
Autenticación y tokens de la Public API
Envía un token de API personal (CLI token) o un token de usuario virtual como token Bearer. Usa usuarios virtuales a diario y el token personal para la cuenta.