LanaChat

API: scripts, pasos y carpetas

5 min de lecturaActualizado Markdown

Un script es una secuencia fija de pasos para una creadora: cada paso es un texto, medios opcionales del Vault, un precio en Stars y una espera antes del siguiente. Los scripts están en carpetas. Se puede marcar un script por creadora como first: se ejecuta en conversaciones nuevas.

Endpoints #

MethodPathDescriptionPermissionStatus
GET/scriptsListar scripts (creator_id= requerido, folder_id=, active=true)can_setupPlanned
POST/scriptsCrear un script con sus pasoscan_setupPlanned
GET/scripts/{id}Un script y sus pasoscan_setupPlanned
PUT/scripts/{id}Reemplazar un script (nombre, pasos, carpeta, cuentas)can_setupPlanned
PATCH/scripts/{id}Activar o desactivar, marcar como first, mover a carpetacan_setupPlanned
POST/scripts/{id}/duplicateCopiar un script (la copia nunca es first)can_setupPlanned
DELETE/scripts/{id}Eliminar un scriptcan_setupPlanned
GET/scripts/foldersCarpetas de una creadora (creator_id=)can_setupPlanned
POST/scripts/foldersCrear una carpetacan_setupPlanned
PATCH/scripts/folders/{id}Renombrar una carpetacan_setupPlanned
DELETE/scripts/folders/{id}Eliminar una carpeta; sus scripts se mueven a "No folder"can_setupPlanned
POST/conversations/{id}/scriptEjecutar un script en una conversación (ver Conversations)can_chatPlanned

The script object #

{
  "id": "scr_204",
  "creator_id": "cr_lea",
  "name": "Welcome message",
  "goal": "First sale within the first day",
  "folder_id": "fld_12",
  "active": true,
  "first": true,
  "account_ids": null,
  "steps": [
    { "id": "st_1", "name": "Hello", "text": "Hey you 😊 glad you found me here", "media": [], "wait_minutes": 0, "pricing": { "mode": "free" } },
    { "id": "st_2", "name": "First set", "text": "Made this one this morning…", "media": ["med_5521", "med_5522"], "wait_minutes": 20, "pricing": { "mode": "paid", "stars": 250, "discount_stars": 200 } }
  ],
  "created_at": "2026-09-30T10:00:00Z",
  "updated_at": "2026-10-05T16:22:00Z"
}
FieldTypeDescription
idstringComienza con scr_
creator_idstringLa creadora cuyos fans lo reciben
namestringSu nombre en la Console
goalstring or nullPara qué es el script, en tus palabras
folder_idstring or nullSu carpeta; null es "No folder"
activebooleanfalse significa que nunca se ejecuta
firstbooleantrue significa que se ejecuta en conversaciones nuevas
account_idsarray or nullnull significa todas las cuentas Telegram de la creadora; un array significa solo esas (al menos una)
stepsarrayLos pasos, en orden (ver abajo)
created_at, updated_atstringISO 8601, UTC

Cada paso tiene:

FieldTypeDescription
idstringComienza con st_
namestringSu nombre en el editor
textstringEl mensaje que recibe el fan
mediaarray of stringsIDs de medios del Vault de la creadora
wait_minutesnumberEspera antes de enviar este paso
pricing.modestringfree, vault (cada medio a su precio en Vault) o paid (un precio para todo el paso)
pricing.starsnumberPrecio en Stars, cuando mode es paid
pricing.discount_starsnumberPrecio menor opcional en Stars

Poner first: true en un script lo quita de los otros scripts de la creadora.

Scripts #

Listar scripts #

GET /scripts · can_setup

ParameterTypeRequiredDescription
creator_idstringSíLa creadora
folder_idstringNoSolo los scripts de esta carpeta
activebooleanNotrue lista solo los scripts activos
limit, cursornumber, stringNoPaginación
curl "https://api.lanachat.ai/v1/scripts?creator_id=cr_lea&active=true" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

La respuesta es una página de objetos script en data, con next_cursor. Sin creator_id la API responde 400.

Crear un script #

POST /scripts · can_setup

ParameterTypeRequiredDescription
creator_idstringSíLa creadora
namestringSíSu nombre
stepsarraySíLos pasos, como en el objeto arriba (sin id)
goalstringNoPara qué sirve
folder_idstringNoCarpeta de la misma creadora
account_idsarray of stringsNoSolo estas cuentas; omitir para todas
curl -X POST https://api.lanachat.ai/v1/scripts \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "name": "Win back", "steps": [{"name": "Miss you", "text": "Hey stranger, where did you go?", "wait_minutes": 0, "pricing": {"mode": "free"}}]}'
{
  "id": "scr_231",
  "creator_id": "cr_lea",
  "name": "Win back",
  "goal": null,
  "folder_id": null,
  "active": true,
  "first": false,
  "account_ids": null,
  "steps": [ { "id": "st_1", "name": "Miss you", "text": "Hey stranger, where did you go?", "media": [], "wait_minutes": 0, "pricing": { "mode": "free" } } ],
  "created_at": "2026-10-06T14:30:00Z",
  "updated_at": "2026-10-06T14:30:00Z"
}

La respuesta es el script nuevo (201), activo, no first, sin carpeta. Un ID de medio de otro Vault es rechazado (400).

Obtener un script #

GET /scripts/{id} · can_setup

curl https://api.lanachat.ai/v1/scripts/scr_204 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

La respuesta es el objeto script con todos sus pasos.

Reemplazar un script #

PUT /scripts/{id} · can_setup

Envía el script completo: name, steps, folder_id y account_ids, como en Crear un script. Los pasos que omitas se eliminan.

curl -X PUT https://api.lanachat.ai/v1/scripts/scr_231 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Win back", "folder_id": "fld_12", "account_ids": null, "steps": [{"name": "Miss you", "text": "Hey stranger, where did you go?", "wait_minutes": 0, "pricing": {"mode": "free"}}, {"name": "Gift", "text": "Kept this one for you", "media": ["med_5522"], "wait_minutes": 30, "pricing": {"mode": "paid", "stars": 200}}]}'

La respuesta es el script actualizado. Un array vacío en account_ids responde 400: usa null para todas las cuentas.

Activar, marcar first, mover #

PATCH /scripts/{id} · can_setup

ParameterTypeRequiredDescription
activebooleanNoActivar o desactivar
firstbooleanNotrue lo hace el script de conversaciones nuevas
folder_idstring or nullNoMoverlo; null es "No folder"
curl -X PATCH https://api.lanachat.ai/v1/scripts/scr_231 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"first": true}'

La respuesta es el script actualizado. El script first anterior de la creadora pierde first.

Duplicar un script #

POST /scripts/{id}/duplicate · can_setup

curl -X POST https://api.lanachat.ai/v1/scripts/scr_204/duplicate \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"

La respuesta es la copia (201). La copia nunca es first.

Eliminar un script #

DELETE /scripts/{id} · can_setup

curl -X DELETE https://api.lanachat.ai/v1/scripts/scr_231 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Carpetas #

Listar carpetas #

GET /scripts/folders · can_setup

ParameterTypeRequiredDescription
creator_idstringSíLa creadora
curl "https://api.lanachat.ai/v1/scripts/folders?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Crear una carpeta #

POST /scripts/folders · can_setup

ParameterTypeRequiredDescription
creator_idstringSíLa creadora
namestringSíNombre de la carpeta
curl -X POST https://api.lanachat.ai/v1/scripts/folders \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "name": "Win back"}'

Renombrar una carpeta #

PATCH /scripts/folders/{id} · can_setup

curl -X PATCH https://api.lanachat.ai/v1/scripts/folders/fld_12 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Welcome"}'

Eliminar una carpeta #

DELETE /scripts/folders/{id} · can_setup

curl -X DELETE https://api.lanachat.ai/v1/scripts/folders/fld_12 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Sus scripts se conservan y se mueven a "No folder".

Ejecutar un script en una conversación #

POST /conversations/{id}/script · can_chat

Inicia un script en la conversación de un fan: state pasa a ser script hasta que termina. El cuerpo, ejemplo y reglas están en Conversations.

Las últimas novedades de Lana en Telegram

Novedades e invitaciones a la beta, primero en el canal.