---
title: POST /chats
slug: post-chats
description: Learn how to create a new ticket conversation using a POST request in Curl, Node.js, Python, and Ruby. Receive a JSON response with details of the generated ticket. Find example response codes and a helpful body template with field descriptions in this co
docTags: 
createdAt: 2023-08-14T00:06:14.836Z
---

Utiliza este endpoint para crear conversaciones en AsisteClick desde tu propio sistema. Por ejemplo, puedes usar este endpoint si quieres enviar un mensaje de bienvenida a tus clientes luego de que confirmen una compra en tu tienda online. O por ejemplo, enviar una notificación de pago pendiente a través de un proceso cron en tu propio servidor.

El documento ofrece ejemplos de código en tres lenguajes de programación (Curl, Node.js, Python y Ruby) para efectuar una solicitud POST y crear una convesación.&#x20;

La respuesta obtenida es un objeto JSON que contiene información el ticket generado.

:::ApiMethodV2
```json
{
  "name": "POST /chats",
  "method": "POST",
  "url": "https://api.asisteclick.com/v2/chats",
  "description": "Crear una nueva conversacion",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "fcAvcO6A2DdXT6xprSLSC",
        "language": "curl",
        "code": "curl --location --request POST 'https://api.asisteclick.com/v2/chats' \\\n--header 'Accept: application/json' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\"deptid_assigned\":\"Number\",\"userid_assigned\":\"Number\",\"status\":\"String\",\"customer_name\":\"string\",\"customer_email\":\"string\",\"customer_phone\":\"string\",\"channel\":\"string\",\"source_id\":\"Number\",\"subject\":\"string\",\"custom_fields\":\"Object\",\"tags\":\"Array\",\"template_id\":\"Number\",\"template_parameters\":\"Array\"}'",
        "customLabel": ""
      },
      {
        "id": "kP5kn57jydnk20mZzcAEo",
        "language": "nodejs",
        "code": "var request = require('request');\nvar options = {\n   'method': 'POST',\n   'url': 'https://api.asisteclick.com/v2/tickets',\n   'headers': {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json'\n   },\n   body: JSON.stringify({\n      \"deptid_assigned\": \"Number\",\n      \"userid_assigned\": \"Number\",\n      \"status\": \"String\",\n      \"customer_name\": \"string\",\n      \"customer_email\": \"string\",\n      \"customer_phone\": \"string\",\n      \"channel\": \"string\",\n      \"source_id\": \"Number\",\n      \"subject\": \"string\",\n      \"custom_fields\": \"Object\",\n      \"tags\": \"Array\",\n      \"template_id\": \"Number\",\n      \"template_parameters\": \"Array\"\n   })\n\n};\nrequest(options, function (error, response) {\n   if (error) throw new Error(error);\n   console.log(response.body);\n});\n",
        "customLabel": ""
      },
      {
        "id": "JBLae8D3JA5rmeyjUUFYS",
        "language": "python",
        "code": "import requests\nimport json\n\nurl = \"https://api.asisteclick.com/v2/tickets\"\n\npayload = json.dumps({\n   \"deptid_assigned\": \"Number\",\n   \"userid_assigned\": \"Number\",\n   \"status\": \"String\",\n   \"customer_name\": \"string\",\n   \"customer_email\": \"string\",\n   \"customer_phone\": \"string\",\n   \"channel\": \"string\",\n   \"source_id\": \"Number\",\n   \"subject\": \"string\",\n   \"custom_fields\": \"Object\",\n   \"tags\": \"Array\",\n   \"template_id\": \"Number\",\n   \"template_parameters\": \"Array\"\n})\nheaders = {\n   'Accept': 'application/json',\n   'Content-Type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n",
        "customLabel": ""
      },
      {
        "id": "R28lP1y5urqmpBJ_rDJlE",
        "language": "ruby",
        "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.asisteclick.com/v2/tickets\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"Accept\"] = \"application/json\"\nrequest[\"Content-Type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"deptid_assigned\": \"Number\",\n   \"userid_assigned\": \"Number\",\n   \"status\": \"String\",\n   \"customer_name\": \"string\",\n   \"customer_email\": \"string\",\n   \"customer_phone\": \"string\",\n   \"channel\": \"string\",\n   \"source_id\": \"Number\",\n   \"subject\": \"string\",\n   \"custom_fields\": \"Object\",\n   \"tags\": \"Array\",\n   \"template_id\": \"Number\",\n   \"template_parameters\": \"Array\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "fcAvcO6A2DdXT6xprSLSC"
  },
  "results": {
    "languages": [
      {
        "id": "1neiV6H1W9JzcfXUhv1PS",
        "language": "200",
        "customLabel": "",
        "code": "{\n\t\"code\": 200,\n\t\"error\": 0,\n\t\"message\": \"Ticket created\",\n\t\"data\": {\n\t\t\"ticket_id\": \"1Q8G3\"\n\t}\n}"
      },
      {
        "id": "Cs31R_PMnuspuzRB8QDXw",
        "language": "404",
        "customLabel": "",
        "code": "{\n      \"message\": \"Ain't no cake like that.\"\n    }"
      }
    ],
    "selectedLanguageId": "1neiV6H1W9JzcfXUhv1PS"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [
      {
        "name": "token",
        "kind": "required",
        "type": "string",
        "description": "Token de acceso",
        "children": []
      }
    ],
    "bodyDataParameters": [
      {
        "name": "deptid_assigned",
        "kind": "required",
        "type": "Number",
        "description": "El ID del departamento al cual se vincula la conversación.",
        "children": []
      },
      {
        "name": "userid_assigned",
        "kind": "required",
        "type": "Number",
        "description": "0 o en caso de querer asignar también la conversación a un usuario en particular colocar acá el ID del usuario.",
        "children": []
      },
      {
        "name": "status",
        "kind": "required",
        "type": "String",
        "description": "OPEN / CLOSE",
        "children": []
      },
      {
        "name": "customer_name",
        "kind": "required",
        "type": "string",
        "description": "El nombre del cliente.",
        "children": []
      },
      {
        "name": "customer_email",
        "kind": "optional",
        "type": "string",
        "description": "NULL o el correo electrónico del cliente.",
        "children": []
      },
      {
        "name": "customer_phone",
        "kind": "optional",
        "type": "string",
        "description": "NULL o el teléfono del cliente en formato Whatsapp.",
        "children": []
      },
      {
        "name": "channel",
        "kind": "required",
        "type": "string",
        "description": "WHATSAPP / TELEGRAM / EMAIL",
        "children": []
      },
      {
        "name": "source_id",
        "kind": "optional",
        "type": "Number",
        "description": "Si channel = 'WHATSAPP' entonces el número de WhatsApp integrado en AsisteClick por el cual se enviará el mensaje. Si channel = 'TELEGRAM' entonces el nombre del bot de Telegram integrado en AsisteClick.",
        "children": []
      },
      {
        "name": "subject",
        "kind": "required",
        "type": "string",
        "description": "El título de la conversación (solo visible por los usuarios en caso que canal = WHATSAPP).",
        "children": []
      },
      {
        "name": "custom_fields",
        "kind": "optional",
        "type": "Object",
        "description": "NULL o vector con valores para campos personalizados {campo: valor}",
        "children": [
          {
            "name": "campo1",
            "kind": "optional",
            "type": "string",
            "description": "valor1"
          },
          {
            "name": "campon",
            "kind": "optional",
            "type": "Number",
            "description": "valorn"
          }
        ]
      },
      {
        "name": "tags",
        "kind": "optional",
        "type": "Array",
        "description": "NULL o vector con etiquetas de la conversación (opcional).",
        "children": []
      },
      {
        "name": "template_id",
        "kind": "optional",
        "type": "Number",
        "description": "El ID de la plantilla aprobada por WhatsApp que se enviará al cliente.",
        "children": []
      },
      {
        "name": "template_parameters",
        "kind": "optional",
        "type": "Array",
        "description": "En caso que la plantilla tenga parámetros aquí se especifican los valores en un vector de strings.",
        "children": []
      },
      {
        "name": "telegram_chat_id",
        "kind": "optional",
        "type": "Number",
        "description": "Para Telegram, el ID Telegram del destinatario",
        "children": []
      },
      {
        "name": "ack_callback_url",
        "kind": "optional",
        "type": "string",
        "description": "Para los canales que gestionan notificación de lectura (como Whatsapp) se enviarán las notificaciones a la URL definida acá. Puede ser nulo o no estar presente.",
        "children": []
      },
      {
        "name": "external_reference",
        "kind": "optional",
        "type": "string",
        "description": "String o número de referencia externa o metadata",
        "children": []
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "autoGeneratedAnchorSlug": "post-chats",
  "legacyHash": "OcWO7E5ShH4OQyka0cpO9"
}
```
:::

## Ejemplo de un body

```javascript
{ 
   "deptid_assigned": 0,
   "userid_assigned": 8,
   "status": "OPEN",
   "customer_name": "Luciano", 
   "customer_email": null,
   "customer_phone": " 5491150173420",
   "channel":  "WHATSAPP",
   "source_id": 5491170052719	,
   "subject": "ahora si!",
   "custom_fields": [{"cliente": "A-123"}],
   "tags": ["PLAN_COMPANY"],
   "template_id": 6358,
   "template_parameters": ["Franco", "Maria"],
   "ack_callback_url": "https://www.empresa.com/v1/recepciones",
   "external_reference": "Campaña 2024-02"
}

```

## Descripción de los campos

| Campo                | Descripción                                                                                                                                                                                                                                                                                                                                |                                                                                                 |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| TOKEN                | El token de la cuenta en AsisteClick.                                                                                                                                                                                                                                                                                                      |                                                                                                 |
| deptid\_assigned     | ID del departamento al cual se asigna la conversación.                                                                                                                                                                                                                                                                                     |                                                                                                 |
| userid\_assigned     | ID del usuario a quien se le asigna la conversación, además de la asignación del departamento. Colocar 0 si se quiere que la conversación esté en la bandeja Sin Asignar y visible para todos los usuarios con acceso al departamento indicado en *deptid\_assigned*.                                                                      |                                                                                                 |
| status               | OPEN si se quiere que la conversación quede en la bandaje Sin Asignar o Asignado a un usuario en particular. Si el cliente responde su respuesta será anexada a la conversación.<br />CLOSED si se quiere que la conversación quede archivada. Si el cliente responde el bot responderá iniciando una nueva conversación desde el inicio.  |                                                                                                 |
| customer\_name       | Nombre del cliente                                                                                                                                                                                                                                                                                                                         |                                                                                                 |
| customer\_email      | Correo electrónico del cliente.                                                                                                                                                                                                                                                                                                            | Puede ser *null* si *channel* no es EMAIL.                                                      |
| customer\_phone      | El teléfono del cliente en formato Whatsapp.                                                                                                                                                                                                                                                                                               | Puede ser *null* si *channel* no es WHATSAPP.                                                   |
| channel              | WHATSAPP o EMAIL                                                                                                                                                                                                                                                                                                                           |                                                                                                 |
| source\_id           | El número de WhatsApp integrado en AsisteClick por el cual se enviará el mensaje. <br />Si es un mensaje  de TELEGRAM entonces colocar el nombre del bot de Telegram integrado en AsisteClick.                                                                                                                                             | Puede ser *null* si *channel* no es WHATSAPP ni TELEGRAM.                                       |
| subject              | El título de la conversación (solo visible por los usuarios en caso que canal = WHATSAPP). En caso que *channel* sea EMAIL este valor será también el título del email.                                                                                                                                                                    |                                                                                                 |
| custom\_fields       | Vector con diccionario de campo y valor. El campo y valor aparecerán en la columna derecha de la conversación (columna de metadata) y, en caso de existir en la lógica del bot, serán también procesados por este.                                                                                                                         | Puede ser null o un vector válido como:<br />\[\{"cliente": "A-123"}]                           |
| tags                 | Vector con etiquetas de la conversación (opcional).                                                                                                                                                                                                                                                                                        | \["CUSTOMER", "PLAN\_COMPANY"]                                                                  |
| template\_id         | El ID de la plantilla aprobada por WhatsApp que se enviará al cliente.                                                                                                                                                                                                                                                                     | Puede ser *null* si *channel* no es WHATSAPP.                                                   |
| template\_parameters | En caso que la plantilla tenga parámetros aquí se especifican los valores en un vector de strings. En el vector solo se colocan los valores del mensaje en el mismo orden en que figuran los campos en la plantilla.                                                                                                                       | Puede ser *null* si *channel* no es WHATSAPP o un vector válido como:<br />\["Franco", "Maria"] |
| telegram\_chat\_id   | Si channel = 'TELEGRAM' colocar el ID del usuario o grupo de Telegram al cual enviar el mensaje                                                                                                                                                                                                                                            | Puede ser null si channel no es TELEGRAM                                                        |
| ack\_callback\_url   | Para los envios por WhatsApp, en caso de colocar una URL de callback, se enviarán notificaciones de envio (sent), recepción (received), lectura (read) y respuesta (replied).                                                                                                                                                              | Puede ser null o no estar presente                                                              |
| external\_reference  | Durante un callback se adjunta el valor de referencia externa recibido en el request original                                                                                                                                                                                                                                              | Puede ser null o no estar presente                                                              |

## Callback de notificacion de mensaje

En caso de utilizar el campo *ack\_callback\_url* colocando una URL válida, AsisteClick ejecutará un POST a esta URL cada vez que:

1. El mensaje haya sido procesado por Whatsapp (*sent*)
2. El mensaje haya llegado al usuario (*received*)
3. El mensaje haya sido leido (*read*)
4. El usuario envio una primer respuesta (*replied*)

Para el caso de evento "**read**" este se envia depenndiendo de la configuración de privacidad en el WhatsApp del usuario.

Para el caso del evento "**replied**" este se envia solo si el ticket es creado con el estado OPEN y únicamente con la recepción del primer mensaje recibido del usuario.

En tu endpoint definido en *ack\_callback\_url* recibirás un JSON con la siguiente estructura:

```javascript
{
  "external_reference": "Campaña 2024-02",
  "ticket_id": "5G9OS",
  "name": "Luciano",
  "phone": "5491150173420",
  "ack": "read"
}
```

Para el caso de las respuestas del callback del evento "**replied**" se incluye también el campo "*message*" que contiene la respuesta del cliente, se esta manera:

```javascript
{
  "external_reference": "Campaña 2024-02",
  "ticket_id": "5G9OS",
  "name": "Luciano",
  "phone": "5491150173420",
  "ack": "replied",
  "message": "Si, me interesa!"
}
```

## Códigos de error

| 1  | customer\_name field is missing                                                                                                                     |
| -- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2  | deptid\_assigned field value is missing                                                                                                             |
| 3  | deptid\_assigned field value is invalid                                                                                                             |
| 4  | userid\_assigned field is missing                                                                                                                   |
| 5  | userid\_assigned field value is invalid                                                                                                             |
| 6  | status field value must be OPEN or CLOSED                                                                                                           |
| 7  | customer\_email format is invalid                                                                                                                   |
| 8  | customer\_phone format is invalid (must be numbers only)                                                                                            |
| 9  | Must provide customer\_email, customer\_phone or telegram\_chat\_id                                                                                 |
| 10 | channel value must be EMAIL, WHATSAPP or TELEGRAM                                                                                                   |
| 11 | subject field value is invalid                                                                                                                      |
| 16 | customer\_email field is required when channel is EMAIL                                                                                             |
| 17 | customer\_phone field is required when channel is WHATSAPP                                                                                          |
| 18 | source\_id is invalid or missing. This field is required when 'channel' is set to WHATSAPP                                                          |
| 19 | custom\_fields format is not valid (should be field1=value1;field2=value2) or a vector of objects key\:value \[\{field1\:value1},\{field2\:value2}] |
| 20 | callback URL is not valid                                                                                                                           |
| 21 | invalid source\_id provided. The company phone number is not linked to a Whatsapp channel                                                           |
| 22 | invalid template\_id provided. Whatsapp message needs a template\_id                                                                                |
| 23 | invalid template\_id provided. Whatsapp message needs a valid template\_id                                                                          |
| 24 | invalid template\_id provided. Whatsapp message needs a valid template\_id                                                                          |
| 25 | invalid template\_parameters provided. Whatsapp message needs a valid template\_parameters vector value in a vector format                          |
| 26 | tags format is not valid (should be tag1;tag2;tag3) or a vector of tags \[tag1,tag2,tag3]                                                           |
| 27 | telegram\_chat\_id field is required when channel is TELEGRAM                                                                                       |
| 28 | callback\_url URL is not valid                                                                                                                      |
| 29 | ack\_callback\_url URL is too long. It must be less than 2048 characters                                                                            |
| 32 | external\_reference must be a string                                                                                                                |
| 33 | external\_reference is too long. It must be less than 20 characters                                                                                 |
| 34 | message field is required when status is PRIVATE                                                                                                    |

