---
title: "Clientes"
description: "Busca y crea clientes desde integraciones de servidor de confianza."
canonical_url: "https://requiply.com/docs/es/developers/typescript-sdk/clients"
---
# Clientes

> Busca y crea clientes desde integraciones de servidor de confianza.

Los recursos de clientes contienen datos de clientes y necesitan una clave secreta en código de servidor de confianza.

## `clients.lookup()`

```ts
clients.lookup(
  input: ClientLookupInput,
  options?: RequiplyRequestOptions,
): Promise<ClientLookupResponse>
```

Pasa `email`, `phone` o `search`; hace falta al menos uno. El método funciona en dos modos:

<table>
<thead>
  <tr>
    <th>
      Entrada
    </th>
    
    <th>
      Modo
    </th>
    
    <th>
      Respuesta
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        email
      </code>
      
       y/o <code>
        phone
      </code>
    </td>
    
    <td>
      Coincidencia exacta, mayúsculas y minúsculas incluidas. Con los dos, el cliente debe tener los dos.
    </td>
    
    <td>
      <code>
        client
      </code>
      
       es el cliente que coincide, o <code>
        null
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        search
      </code>
    </td>
    
    <td>
      Búsqueda aproximada en el nombre, los apellidos, el email y el teléfono.
    </td>
    
    <td>
      <code>
        client
      </code>
      
       es <code>
        null
      </code>
      
      ; <code>
        matches
      </code>
      
       lista hasta 10 clientes.
    </td>
  </tr>
</tbody>
</table>

```ts
const { client } = await requiply.clients.lookup({ email: 'customer@example.com' });

const { matches } = await requiply.clients.lookup({ search: 'Olena Koval' });
```

`search` divide el texto en palabras (hasta cuatro), y un cliente coincide cuando todas las palabras aparecen en algún lugar de su nombre, sus apellidos, su email o su teléfono. Los nombres ucranianos también se prueban en el otro alfabeto, así que `Olena` encuentra *Олена* y `Галина` encuentra *Halyna*.

Cada cliente tiene `id`, `name`, `lastName`, `email`, `phone` y `discountPercentage` (`0` si no tiene descuento). El nombre, los apellidos, el email y el teléfono pueden ser `null`.

## `clients.create()`

```ts
clients.create(
  input: ClientCreateInput,
  options?: RequiplyRequestOptions,
): Promise<ClientCreateResponse>
```

La entrada acepta los campos opcionales `name`, `lastName`, `email` y `phone`. Hace falta al menos uno entre `email` y `phone`.

```ts
const { client, created } = await requiply.clients.create({
  name: 'Alex',
  lastName: 'Morgan',
  email: 'alex@example.com',
  phone: '+380951234567',
});
```

<warning>

**phone debe estar en formato internacional E.164:** un `+` inicial, el prefijo del país y de 7 a 15 dígitos en total, por ejemplo `+380951234567`. Un número en formato nacional se rechaza con un `400` y el mensaje *"Phone must be in international E.164 format with a country code, e.g. +380951234567"* (el teléfono debe estar en formato internacional E.164 con el prefijo del país). La misma regla se aplica a los formularios de cliente de la app y a los asistentes de IA que crean clientes.

</warning>

La respuesta devuelve el cliente y `created`. `clients.create()` evita los duplicados: cuando ya existe un cliente con ese email o, si no, con ese teléfono, recibes ese cliente con `created: false` en lugar de un segundo registro.


## Sitemap

See the full [sitemap](https://requiply.com/docs/sitemap.md) for all pages.
