> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ycloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Partner Direct Link (TP Lite)

> Incorpora clientes de WhatsApp como Tech Partner de YCloud con un enlace alojado o un botón SDK, sin convertirte en socio de Meta.

Partner Direct Link (TP Lite) es una opción de integración para los Tech Partners de YCloud. Necesitas que YCloud lo habilite para tu cuenta, pero no necesitas convertirte en socio de Meta.

Crea un enlace de incorporación de corta duración en tu servidor. Tu cliente puede abrirlo directamente o a través de un botón en tu sitio web. Comienza con Direct Link para probar tu integración, luego usa el botón SDK si deseas que los clientes completen el registro en una ventana emergente.

## Resumen de la integración

1. **Prepara tu cuenta.** Haz que YCloud habilite Partner Direct Link, crea una clave de API y configura tu receptor de webhook.
2. **Configura tu punto de entrada.** Abre Partner Direct Link en el panel de control y define tu marca, URL de redirección u orígenes del SDK.
3. **Crea un enlace.** Tu servidor solicita un enlace de incorporación para un cliente en tu sistema.
4. **Permite que el cliente se conecte.** El cliente abre la página alojada o la ventana emergente del SDK y completa la autorización de Meta.
5. **Confirma el resultado.** Tu backend recibe el webhook y asocia la WABA con el cliente.

## Antes de comenzar

1. Pide a YCloud que habilite Partner Direct Link para tu cuenta. Si aún no eres Tech Partner, [solicita convertirte en uno](https://www.ycloud.com/tech-partner).
2. Crea una clave de API en **Desarrolladores > Clave de API**.
3. Configura tu receptor en **Desarrolladores > Webhooks** y suscríbete a `whatsapp.business_account.updated`.

<Warning>
  Llama a la API de creación de enlaces desde tu servidor. Nunca incluyas tu clave de API en el código del navegador o de la aplicación móvil. Trata cada URL de incorporación como una credencial temporal: mantenla fuera de páginas públicas, análisis y registros públicos.
</Warning>

## Encuentra Partner Direct Link en el panel de control

1. Abre el panel de control de YCloud para la cuenta donde Partner Direct Link esté habilitado.
2. Despliega **Desarrolladores** en la barra lateral izquierda.
3. Haz clic en **Partner Direct Link** para abrir la página de configuración.

<Frame caption="Open Developers > Partner Direct Link to configure your branding and entry point. This example shows the settings before configuration.">
  <img src="https://mintcdn.com/lchnan/vUKSC8TUE8OdyQKj/product-assets/partners-2026-09-28/partner-direct-link-settings.png?fit=max&auto=format&n=vUKSC8TUE8OdyQKj&q=85&s=93ba5518df8a7af5c2364f8e41e8defe" alt="Página de Partner Direct Link con la configuración básica y la vista previa del registro alojado" width="3024" height="1656" data-path="product-assets/partners-2026-09-28/partner-direct-link-settings.png" />
</Frame>

La página contiene **Configuración básica** para tu marca e **Integración** para crear un enlace, integrar el punto de entrada y suscribirte a webhooks. Usa la **Vista previa de la página alojada** para ver la página orientada al cliente.

## Configura tu marca y el punto de entrada

Abre **Desarrolladores > Partner Direct Link** en el panel de control de YCloud. Completa la **Configuración básica**:

| Parámetro | Requisito | Propósito |
| - | - | - |
| **Nombre para mostrar** | Obligatorio | Tu nombre de socio en la página de registro alojada. |
| **Logo del socio** | Opcional | Tu logotipo en la página de registro alojada. |
| **URL de redirección (solo Direct Link)** | Opcional | Una URL HTTPS completa para abrir después de un registro exitoso. Sin ella, los clientes ven una página de éxito con tu marca. |
| **Orígenes de SDK permitidos (solo botón SDK)** | Obligatorio para el botón SDK | Los orígenes de las páginas que cargan el SDK, como `https://app.example.com`. |

Para los orígenes del SDK, introduce el esquema exacto, el dominio y el puerto opcional, sin ruta. Añade cada subdominio o puerto por separado; los comodines no son compatibles. Usa HTTPS en producción. HTTP solo se permite para el desarrollo en `localhost`. Direct Link funciona sin un origen de SDK permitido; el botón SDK no.

## Crea un enlace de incorporación en tu servidor

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST 'https://api.ycloud.com/v2/partner/embeddedSignup/links' \
  -H 'X-API-Key: YOUR_YCLOUD_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "partnerCustomerId": "customer_001",
    "onboardingType": "WHATSAPP_BUSINESS_PLATFORM",
    "locale": "en_US"
  }'
```

| Campo | Obligatorio | Descripción |
| - | - | - |
| `partnerCustomerId` | Sí | Un ID de cliente estable de tu sistema. Evita información confidencial. YCloud devuelve este ID en el webhook de vinculación exitosa. |
| `onboardingType` | Sí | Elige `WHATSAPP_BUSINESS_PLATFORM` para mensajería basada en API, o `WHATSAPP_BUSINESS_APP` para la coexistencia con Business App, como se describe a continuación. |
| `locale` | No | El idioma de la página alojada. El valor predeterminado es `en_US`. |

* [**WhatsApp Business Platform**](/es/documentation/whatsapp-business-platform/overview) (`WHATSAPP_BUSINESS_PLATFORM`): Elige este modo para conectar un número para mensajería a través de API y tu software.
* [**Coexistencia con WhatsApp Business App**](/es/documentation/whatsapp-business-platform/accounts-and-business-identity/whatsapp-business-app-coexistence) (`WHATSAPP_BUSINESS_APP`): Elige este modo para un número existente apto de Business App cuando el cliente desee seguir usando la aplicación y agregar mensajería por API en el mismo número.

Las configuraciones regionales admitidas son `en_US` (inglés), `zh_CN` (chino simplificado), `es_ES` (español), `pt_BR` (portugués de Brasil), `id_ID` (indonesio) e `ru_RU` (ruso). Los valores distinguen entre mayúsculas y minúsculas. Otros valores devuelven HTTP 400.

Ejemplo de respuesta:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "onboardingUrl": "https://connect.ycloud.com/open/whatsapp/onboard#token=EXAMPLE_TOKEN",
  "expiresAt": 1893456000000
}
```

`expiresAt` es la hora de caducidad como una marca de tiempo Unix en milisegundos. La duración predeterminada del enlace es de dos horas. Cada enlace conecta a un cliente con una WABA. Antes de que se complete el registro, el cliente puede actualizar, reintentar o abrir el enlace en otro navegador mientras siga siendo válido. Tras una vinculación exitosa, el enlace no puede vincular otra WABA. Cree un nuevo enlace cuando el cliente necesite cambiar o agregar una WABA.

## Opción 1: Enlace directo

Agregue un botón de conexión a su aplicación de cliente. Cuando el cliente haga clic en él, solicite un enlace de incorporación a su servidor y navegue a `onboardingUrl` o ábralo en una nueva ventana. También puede enviarlo de forma privada al cliente correspondiente a través de un canal seguro uno a uno.

El cliente abre la página alojada y hace clic en **Continuar con Meta**. Utiliza una cuenta de Facebook con permisos para administrar su negocio y selecciona o crea su negocio, WABA y número de teléfono en Meta. YCloud completa la vinculación y muestra el resultado.

<Frame caption="Direct Link integration and the hosted page preview. This example has no generated onboarding link.">
  <img src="https://mintcdn.com/lchnan/vUKSC8TUE8OdyQKj/product-assets/partners-2026-09-28/partner-direct-link-entry-point.png?fit=max&auto=format&n=vUKSC8TUE8OdyQKj&q=85&s=43d4aa490a7745834b3473c68d6d0fb4" alt="Integración de Enlace directo con un marcador de posición de URL de incorporación y una vista previa de la página de registro del cliente" width="3024" height="1656" data-path="product-assets/partners-2026-09-28/partner-direct-link-entry-point.png" />
</Frame>

Si configuró una URL de redireccionamiento, el registro exitoso redirige allí con `status=connected` añadido como parámetro de consulta. Utilice esto para actualizar la página orientada al cliente; utilice el webhook que figura a continuación para confirmar la vinculación en su backend.

## Opción 2: Botón de SDK

Agregue el origen de su página a **Orígenes de SDK permitidos**, luego cargue el SDK. El código de su navegador llama a su propio backend para obtener el enlace. La ruta `/api/ycloud/onboarding-link` a continuación es una ruta de ejemplo que implementa en su servidor.

```html theme={"theme":{"light":"github-light","dark":"github-dark"}}
<script src="https://connect.ycloud.com/open/sdk/v1.js"></script>
<button id="yc-onboarding" type="button">Continue with Meta</button>
<p id="yc-status" role="status"></p>

<script>
  const status = document.getElementById('yc-status');
  document.getElementById('yc-onboarding').addEventListener('click', async function () {
    try {
      const response = await fetch('/api/ycloud/onboarding-link', { method: 'POST' });
      if (!response.ok) throw new Error('Link creation failed');
      const { onboardingUrl } = await response.json();
      YCloudOnboarding.open({
        onboardingUrl,
        onStatus: function (result) {
          status.textContent = result.state === 'CONNECTED'
            ? 'WhatsApp connected. Confirming with your server.'
            : 'Signup is not complete. Follow the instructions in the signup window.';
        },
        onError: function (error) {
          status.textContent = error.code === 'POPUP_BLOCKED'
            ? 'Allow popups for this site, then try again.'
            : 'Unable to open signup. Request a new link.';
        },
        onClose: function () {
          status.textContent = 'Signup window closed before a final result.';
        }
      });
    } catch {
      status.textContent = 'Unable to create a signup link. Please try again.';
    }
  });
</script>
```

`onStatus(result)` informa el estado del registro:

| Campo | Significado |
| - | - |
| `state` | `CONNECTED` significa éxito. Otros valores indican un flujo incompleto o fallido, como `RETRYABLE_FAILED`. |
| `wabaId` | El ID de WABA, devuelto solo en caso de éxito. |
| `phoneNumberId` | El ID del número de teléfono de Meta, que puede devolverse en caso de éxito. |
| `errorCode` | Un código de error que puede devolverse en caso de fallo. |
| `retryable` | Si el cliente puede reintentar en la ventana de registro actual. |
| `requestId` | Un ID de solicitud de YCloud que puede proporcionar al soporte técnico para la resolución de problemas. |

`onError(error)` significa que el SDK no pudo abrir el registro. Su `code` puede ser `POPUP_BLOCKED` o `INVALID_ONBOARDING_URL`. `onClose(event)` se activa solo cuando el cliente cierra la ventana antes de obtener un resultado final, con `reason: "USER_CLOSED"`.

Estas devoluciones de llamada actualizan su frontend. Utilice el webhook del lado del servidor como el resultado final de la vinculación.

## Confirmar la vinculación con un webhook

<Frame caption="Subscribe to whatsapp.business_account.updated in Developers > Webhooks to receive the binding result.">
  <img src="https://mintcdn.com/lchnan/vUKSC8TUE8OdyQKj/product-assets/partners-2026-09-28/partner-direct-link-webhook.svg?fit=max&auto=format&n=vUKSC8TUE8OdyQKj&q=85&s=2655b86ea299e041f3bfd050d689c71e" alt="Paso de integración de Partner Direct Link que muestra el evento de webhook whatsapp.business_account.updated" width="3024" height="1656" data-path="product-assets/partners-2026-09-28/partner-direct-link-webhook.svg" />
</Frame>

YCloud envía `whatsapp.business_account.updated` a su receptor de webhooks configurado después de que la vinculación se complete con éxito. El siguiente extracto muestra los campos que utiliza su integración:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "EXAMPLE_EVENT_ID",
  "type": "whatsapp.business_account.updated",
  "whatsappBusinessAccount": {
    "id": "EXAMPLE_WABA_ID",
    "updateEvent": "PARTNER_ADDED",
    "paymentMethodAttached": true,
    "partnerCustomerId": "customer_001"
  }
}
```

Cuando `updateEvent` sea `PARTNER_ADDED`, procese la WABA como recién agregada. Haga coincidir `partnerCustomerId` con su cliente y guarde el `id` de la WABA. Un valor de `paymentMethodAttached` igual a `true` significa que la asignación de crédito se realizó correctamente; `false` significa que no se ha completado.

Deduplique las entregas utilizando el `id` del evento y devuelva HTTP 2xx tras una recepción exitosa. Consulte [Webhooks](/es/api-reference/guides/api-fundamentals/configure-webhooks) para la configuración del receptor.

## Solucionar problemas de Partner Direct Link

| Síntoma | Acción |
| - | - |
| El cliente cierra Meta o interrumpe el registro. | Haga clic en **Continuar con Meta** nuevamente mientras el enlace original siga siendo válido. |
| La página informa de un enlace caducado o no válido. | Cree un nuevo enlace en su servidor. |
| El SDK informa de un origen no válido. | Compruebe que el origen exacto de la página esté en **Orígenes de SDK permitidos**. |
| La creación del enlace devuelve HTTP 429. | Espere durante el período especificado por `Retry-After` antes de volver a intentarlo. Evite crear enlaces de forma repetida. |
| El registro se muestra como correcto pero su sistema no se ha actualizado. | Compruebe la configuración del webhook, la suscripción a eventos y los registros del receptor. Utilice el webhook como el resultado final. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.