# API de contactos

Las llamadas a la API se realizan por canal. Los tokens se pueden generar usando el icono de llave, junto al canal deseado en [Configuración](broken://pages/-MT1KQ9133LGedd40mrq) . Hay un límite de frecuencia de 100 llamadas API por minuto.

## Peticiones <a href="#requests" id="requests"></a>

La API de contactos se compone de varias solicitudes:

* [Obtener contacto por campo personalizado](/api-de-desarrolladores/api-de-contactos.md#get-contact-by-custom-field)
* [Obtener contacto por ID](/api-de-desarrolladores/api-de-contactos.md#get-contact-by-id)
* [Actualizar contacto por ID](/api-de-desarrolladores/api-de-contactos.md#update-contact-by-id)
* [Añadir etiqueta por ID](/api-de-desarrolladores/api-de-contactos.md#add-tag-by-id)
* [Elimina la etiqueta de ID](/api-de-desarrolladores/api-de-contactos.md#remove-tag-by-id)
* [Crear contacto](/api-de-desarrolladores/api-de-contactos.md#create-contact)

### Obtener contacto por campo personalizado <a href="#get-contact-by-custom-field" id="get-contact-by-custom-field"></a>

Esta solicitud devuelve una lista de objetos de contacto con paginación.

```c
/v1/contact/by_custom_field
```

#### Ejemplo de solicitud GET <a href="#sample-get-request" id="sample-get-request"></a>

```aspnet
curl -X GET \
      'https://app.1980tic.us/api/v1/contact/by_custom_field?name=firstName&value=Muhammad%20Mahin' \
      -H 'Authorization: Bearer {channel_token}' \
      -H 'Content-Type: application/json'
```

#### Respuesta: **éxito (estado HTTP → 200)** <a href="#response-success-http-status-200" id="response-success-http-status-200"></a>

```aspnet
{
      "data": [
        {
          "id": "1776025372480910",
          "custom_fields": {
            "firstName": "Mahin",
            "lastName": "Dar",
            "locale": "en_GB",
            "timezone": "5",
            "gender": "male",
            "phone": "123123",
            "email": "muhammad@respond.io",
            "customerid": "1"
          },
          "tags": [
            "Blog Updates",
            "Platform Updates"
          ],
          "created_at": 1575618542
        }
      ],
      "links": {
        "first": "http://app.1980TIC.com/api/v1/contact/by_custom_field?page=1",
        "last": "http://app.1980TIC.com/api/v1/contact/by_custom_field?page=1",
        "prev": null,
        "next": null
      },
      "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "http://app.1980TIC.com/api/v1/contact/by_custom_field",
        "per_page": 10,
        "to": 1,
        "total": 1
      }
    }
```

### Obtener contacto por ID <a href="#get-contact-by-id" id="get-contact-by-id"></a>

Esta solicitud devuelve un único objeto de contacto.

```
/v1/contact/{contact_id}
```

#### Ejemplo de solicitud GET <a href="#sample-get-request-1" id="sample-get-request-1"></a>

```
curl -X GET \    
       https://app.1980tic.us/api/v1/contact/1776025372480910 \
         -H 'Autorización: Portador {channel_token}' \   
         -H 'Tipo de contenido: aplicación / json' \
```

#### Respuesta: **éxito (estado HTTP → 200)** <a href="#response-success-http-status-200-1" id="response-success-http-status-200-1"></a>

```
{
        "data": {
            "id": "1776025372480910",
            "custom_fields": {
                "firstName": "Mahin",
                "lastName": "Dar",
                "locale": "en_GB",
                "timezone": "5",
                "gender": "male",
                "phone": "123123",
                "email": "muhammad@respond.io",
                "customerid": "1"
            },
            "tags": [
                "Blog Updates",
                "Platform Updates"
            ],
            "created_at": 1575618542
        }
    }
```

### Actualizar contacto por ID <a href="#update-contact-by-id" id="update-contact-by-id"></a>

Esta solicitud actualiza un valor de campo personalizado de contacto.

```
/v1/contact/{contact_id}
```

#### Ejemplo de solicitud PUT <a href="#sample-put-request" id="sample-put-request"></a>

```
curl -X PUT \
      https://app.1980tic.us/api/v1/contact/1776025372480910 \
      -H 'Authorization: Bearer {channel_token}' \
      -H 'Content-Type: application/json' \
      -d '{
        "custom_fields": [
            {
                "name": "firstName",
                "value": "Muhammad Mahin"
            },
            {
                "name": "lastName",
                "value": "Dar"
            }
        ]
    }'
```

#### Respuesta: **éxito (estado HTTP → 200)** <a href="#response-success-http-status-200-2" id="response-success-http-status-200-2"></a>

```
{
      "data": {
        "id": "cus_112233344555"
      }
    }
```

#### Limitaciones <a href="#limitations-1" id="limitations-1"></a>

Máximo 30 campos actualizados por solicitud.

{% hint style="info" %}
Tenga en cuenta que en el caso del canal Viber, debido a una cierta limitación, la ID de contacto debe proporcionarse en un formato codificado en **Base64** .
{% endhint %}

### Agregar etiqueta por ID <a href="#add-tag-by-id" id="add-tag-by-id"></a>

Esta solicitud agrega etiquetas para un contacto.

```bash
/v1/contact/{contact_id}/tags
```

#### Ejemplo de solicitud POST <a href="#sample-post-request" id="sample-post-request"></a>

```aspnet
curl -X POST \
      https://app.1980tic.us/api/v1/contact/1776025372480910/tags \
      -H 'Authorization: Bearer {channel_token}' \
      -H 'Content-Type: application/json' \
      -d '{
        "tags": [
            "Blog Updates",
            "Platform Updates"
        ]
    }'
```

#### Respuesta: **éxito (estado HTTP → 200)** <a href="#response-success-http-status-200-3" id="response-success-http-status-200-3"></a>

```
{
        "status": "success",
        "message": "Contact Tags have been added successfully.",
        "data": []
    }
```

#### Limitaciones <a href="#limitations-2" id="limitations-2"></a>

Máximo 10 etiquetas agregadas por solicitud.

### Eliminar etiqueta por ID <a href="#remove-tag-by-id" id="remove-tag-by-id"></a>

Esta solicitud elimina las etiquetas de un contacto.

```
/v1/contact/{contact_id}/tags
```

#### Ejemplo de solicitud DELETE <a href="#sample-delete-request" id="sample-delete-request"></a>

```
curl -X DELETE \
      https://app.1980tic.us/api/v1/contact/1776025372480910/tags \
      -H 'Authorization: Bearer {channel_token}' \
      -H 'Content-Type: application/json' \
      -d '{
        "tags": [
            "Blog Updates",
            "Platform Updates"
        ]
    }'
```

#### Respuesta: **éxito (estado HTTP → 200)** <a href="#response-success-http-status-200-4" id="response-success-http-status-200-4"></a>

```
{
        "status": "success",
        "message": "Contact Tags deleted successfully.",
        "data": []
    }
```

#### Limitaciones <a href="#limitations-3" id="limitations-3"></a>

Máximo de 10 etiquetas eliminadas por solicitud.

{% hint style="info" %}
Tenga en cuenta que en el caso del canal Viber, debido a una cierta limitación, la ID de contacto debe proporcionarse en un formato codificado en **Base64.**
{% endhint %}

### Crear contacto <a href="#create-contact" id="create-contact"></a>

Esta solicitud crea un contacto y establece valores para sus campos personalizados.

```
/v1/contact
```

#### Ejemplo de solicitud GET <a href="#sample-get-request-2" id="sample-get-request-2"></a>

```
curl -X POST \
      https://app.1980tic.us/api/v1/contact/ \
      -H 'Authorization: Bearer {channel_api_token}' \
      -H 'Content-Type: application/json' \
      -d '{
        "custom_fields": [
            {
                "name": "phone",
                "value": "03244077087"
            },
            {
                "name": "firstName",
                "value": "Muhammad Mahin"
            },
            {
                "name": "lastName",
                "value": "Dar"
            }
        ]
    }'
```

#### Respuesta: **éxito (estado HTTP → 200)** <a href="#response-success-http-status-200-5" id="response-success-http-status-200-5"></a>

```
{
        "data": {
            "id": "cus_112233344555"
        }
    }
```

## Códigos de error <a href="#error-codes" id="error-codes"></a>

### **No autorizado (estado HTTP → 401)** <a href="#unauthorized-http-status-401" id="unauthorized-http-status-401"></a>

```
{
        "status": "error",
        "message": "API Token is invalid.",
        "data": []
    }
```

### **Demasiadas solicitudes (estado HTTP → 429)** <a href="#too-many-requests-http-status-429" id="too-many-requests-http-status-429"></a>

```
    {
      "status": "error",
      "message": "Too many requests",
      "data": []
  }
```

### **Método no permitido** **(estado HTTP → 405)**  <a href="#method-not-allowed-http-status-405" id="method-not-allowed-http-status-405"></a>

```
    {
      "status": "error",
      "message": "405 Method Not Allowed.",
      "data": []
  }
```

### **General (Estado HTTP → 403)** <a href="#general-http-status-403" id="general-http-status-403"></a>

```
    {
      "status": "error",
      "message": "Message String",
      "data": []
  }
```

### Limitaciones <a href="#limitations" id="limitations"></a>

Máximo 30 campos creados por solicitud.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.1980tic.us/api-de-desarrolladores/api-de-contactos.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
