Saltar al contenido principal

Bridge

El bridge mueve tokens de Skipo de una red a otra a través de una contraparte: Skipo le envía tokens a la contraparte en una red y la contraparte le paga a Skipo en otra. La sección Bridge (/v2/bridge) publica los registros que Skipo lleva de cada una de esas transferencias. Todas sus rutas son de lectura (GET).

Los recursos mantienen la perspectiva de Skipo, igual que el resto de la v2:

Paso del bridgeEn la sección Bridge es…
Skipo le envía tokens a la contraparteun retiro (/v2/bridge/withdrawals)
La contraparte le paga a Skipo (un pago o una devolución)un depósito (/v2/bridge/deposits)
Dónde le paga la contraparte a Skipouna dirección de depósito (/v2/bridge/deposit-addresses)

Los dos tramos de una transferencia se cruzan por transactionHash. Un envío lleva además, en withdrawalData.clientReferenceId, la referencia que Skipo le dio a la contraparte para ese envío.

Solo para la contraparte del bridge

Solo la cuenta Skipo configurada como contraparte del bridge ve datos. Cualquier otra cuenta lee una sección vacía: [] en las direcciones de depósito, una página con data vacío en las listas y 404 not_found en una lectura por id.

Autenticación​

Las rutas Bridge son de Nivel 1: una llave bearer con el scope transfers:read. Es la misma autenticación y el mismo scope que usan GET /v2/withdrawals, GET /v2/deposits y GET /v2/deposit-addresses, y no exigen ningún otro scope. Ver Autenticación.

GET /v2/bridge/deposit-addresses HTTP/1.1
Host: api.skipo.com
Authorization: Bearer skp_live_<placeholder>

Endpoints​

MétodoRutaDevuelve
GET/v2/bridge/deposit-addressesUn arreglo plano con las direcciones de depósito del bridge.
GET/v2/bridge/withdrawals{data, pagination} con los envíos de Skipo a la contraparte.
GET/v2/bridge/withdrawals/{id}Un envío.
GET/v2/bridge/deposits{data, pagination} con las recepciones desde la contraparte.
GET/v2/bridge/deposits/{id}Una recepción.

Las tablas de parámetros y esquemas de cada ruta están en la referencia de endpoints de Bridge.

Direcciones de depósito​

GET /v2/bridge/deposit-addresses devuelve un arreglo plano, sin envoltura de paginación, con una fila por cada par (assetSymbol, networkId) que ofrece el bridge.

CampoTipoDescripción
assetSymbolstringCódigo del activo liquidado, por ejemplo USDT.
networkIdstringLa red de la dirección, con el vocabulario de GET /v2/assets: BSC, ETH, TRON.
networkNamestringNombre de la red, solo para mostrar.
addressstringLa dirección de depósito del bridge en esa red.
tagstring | nullnull en BSC, ETH y TRON. Nunca "".
tagRequiredbooleanfalse en BSC, ETH y TRON.
tagTypestring | nullnull en BSC, ETH y TRON.
tagLabelstring | nullnull en BSC, ETH y TRON.
minimumDepositstring decimalEl depósito mínimo en esa dirección, en assetSymbol. La contraparte mantiene cada pago y cada devolución a esa dirección en ese mínimo o por encima.

Acepta un solo parámetro opcional, assetSymbol, que restringe la lista a un activo. Un activo que el bridge no ofrece responde [], no un error.

[
{
"assetSymbol": "USDT",
"networkId": "ETH",
"networkName": "Ethereum (ERC20)",
"address": "0x3333333333333333333333333333333333333333",
"tag": null,
"tagRequired": false,
"tagType": null,
"tagLabel": null,
"minimumDeposit": "0.1"
},
{
"assetSymbol": "USDT",
"networkId": "BSC",
"networkName": "BNB Smart Chain (BEP20)",
"address": "0x3333333333333333333333333333333333333333",
"tag": null,
"tagRequired": false,
"tagType": null,
"tagLabel": null,
"minimumDeposit": "0.1"
},
{
"assetSymbol": "USDT",
"networkId": "TRON",
"networkName": "Tron (TRC20)",
"address": "T333333333333333333333333333333333",
"tag": null,
"tagRequired": false,
"tagType": null,
"tagLabel": null,
"minimumDeposit": "0.1"
}
]

Envíos y recepciones​

GET /v2/bridge/withdrawals lista los envíos de Skipo a la contraparte y GET /v2/bridge/deposits, las recepciones desde ella: sus pagos y sus devoluciones. Las dos devuelven la envoltura {data, pagination} descrita en Paginación.

ParámetroDescripción
pageNúmero de página. Empieza en 1. Por defecto 1.
limitElementos por página, de 1 a 100. Por defecto 25.
startDateCota inferior inclusiva sobre createdAt, en ISO-8601.
endDateCota superior exclusiva sobre createdAt, en ISO-8601.
assetFormatbase o rebased (por defecto). En el bridge los dos dan las mismas cifras, con multiplier "1".
assetSymbolCódigo exacto del activo liquidado, por ejemplo USDT.
statusPENDING, IN_PROGRESS, COMPLETED o FAILED, comparado como texto. Un valor desconocido responde una página vacía.
subTypeSolo EXTERNAL_CRYPTO tiene filas. Cualquier otro valor del enum responde una página vacía.
transactionHashEl hash exacto de la transacción. Los dígitos hexadecimales coinciden en mayúscula o minúscula.
clientReferenceIdSolo en retiros. Coincidencia exacta con withdrawalData.clientReferenceId.

Las filas vienen de la más nueva a la más antigua: createdAt descendente y, a igual createdAt, id descendente.

  • Un envío aparece en la lista solo cuando ya lleva su transactionHash, y eso ocurre antes de que Skipo le notifique el envío a la contraparte.
  • En una recepción, createdAt es el momento en que Skipo la detectó por primera vez.
GET /v2/bridge/withdrawals?page=1&limit=100&startDate=2026-10-02T14:00:00Z&endDate=2026-10-05T14:00:00.512Z&assetFormat=base HTTP/1.1
Host: api.skipo.com
Authorization: Bearer skp_live_<placeholder>

Lectura por id​

GET /v2/bridge/withdrawals/{id} y GET /v2/bridge/deposits/{id} devuelven una fila con el mismo contenido que tiene en la lista y aceptan el mismo assetFormat. Un id que no es un envío (o una recepción) del bridge de tu cuenta responde 404 not_found.

GET /v2/bridge/withdrawals/00000000-0000-4000-8000-000000000184?assetFormat=base HTTP/1.1
Host: api.skipo.com
Authorization: Bearer skp_live_<placeholder>

Convenciones de los registros​

Los envíos usan el WithdrawalResource de la v2 y las recepciones, el DepositResource, con estos valores fijos en el bridge:

  • subType es siempre EXTERNAL_CRYPTO.
  • fee es siempre "0" y amount es igual a total. En un envío, amount son exactamente los tokens enviados. En una recepción, es lo recibido en la cadena, truncado al amountIncrement del activo.
  • multiplier es "1" y base repite los valores de primer nivel con cualquier assetFormat.
  • bankReference es null. En las recepciones también son null senderName, senderNationalId, senderBankId, senderAccount, bankDescription y valueDate.
  • Todas las claves documentadas están siempre presentes. Un valor ausente es null, nunca "".
  • Las fechas son ISO-8601 en UTC con milisegundos, por ejemplo 2026-10-05T14:03:05.118Z.
  • Los hashes van en la forma canónica de su red: en EVM, 0x más 64 dígitos hexadecimales en minúscula; en TRON, 64 dígitos hexadecimales en minúscula, sin prefijo. El transactionHash de primer nivel es igual a la copia que va dentro de withdrawalData o depositData.
  • Una fila en estado final (COMPLETED o FAILED) no vuelve a cambiar.

withdrawalData​

ClaveDescripción
networkId, networkName, networkNativeAsset, evmChainId, assetTypeEl bloque de la cadena, igual que en GET /v2/withdrawals.
transactionHashEl hash del envío, igual al de primer nivel.
destinationAddressLa dirección de la contraparte a la que se enviaron los tokens.
destinationTagnull.
sourceAddressLa dirección de custodia de Skipo que hizo el envío.
clientReferenceIdLa referencia que Skipo le dio a la contraparte para este envío. Es opaca: compárala tal cual.
networkFee, networkFeeAssetSymbolEl gas que pagó Skipo por un envío COMPLETED, en la moneda nativa de la red. Es solo informativo y vale null en cualquier otra fila.
statusReasonnull salvo en FAILED, donde vale REVERTED o DROPPED.
updatedAtCuándo cambió la fila por última vez.
completedAtCuándo pasó a COMPLETED; null en cualquier otro estado.

depositData​

ClaveDescripción
networkId, networkName, networkNativeAsset, evmChainId, assetTypeEl bloque de la cadena, igual que en GET /v2/deposits.
transactionHashEl hash de la recepción, igual al de primer nivel.
sourceAddressLa dirección que envió los tokens en la cadena.
depositAddressLa dirección de depósito del bridge que recibió los tokens.
depositTagnull.
statusReasonnull salvo en FAILED, donde vale DROPPED.
updatedAtCuándo cambió la fila por última vez.
completedAtCuándo pasó a COMPLETED; null en cualquier otro estado.

Estados​

statusEn un envíoEn una recepción
PENDINGEn curso: Skipo registró el envío y todavía no está confirmado en la cadena.En curso: Skipo detectó la recepción y todavía no está confirmada.
IN_PROGRESSEn curso: la transacción se transmitió a la cadena y espera confirmaciones.En curso: la transacción espera confirmaciones.
COMPLETEDFinal. Los tokens están en la dirección de la contraparte.Final. Skipo acreditó la recepción.
FAILEDFinal. Ningún token llegó a la contraparte con esta transacción.Final. Skipo no acreditó la recepción.

PENDING e IN_PROGRESS son estados en curso: vuelve a leer la fila por id hasta que llegue a un estado final.

statusReason vale null salvo cuando status es FAILED:

statusReasonDóndeSignificado
REVERTEDEnvíosLa transacción se ejecutó en la cadena y falló. No movió tokens.
DROPPEDEnvíosLa transacción nunca quedó final en la cadena: se descartó o se reemplazó. No movió tokens.
DROPPEDRecepcionesLa recepción falló y Skipo no la acreditará.

Errores​

HTTPcodeCuándo
400validation_errorUn parámetro desconocido, o un valor que no pasa la validación: un subType fuera del enum, un assetFormat inválido, una fecha mal formada o un limit fuera de 1–100.
404not_foundUna lectura por id de un id que no es un envío o una recepción del bridge de tu cuenta.
502downstream_unavailableUn servicio interno de Skipo no respondió. Se puede reintentar.

Los demás códigos de la v2 (401, 403, 429, 500 y 503) funcionan igual que en cualquier otra ruta. Ver Errores.

Ejemplos​

Todos los valores son marcadores de posición.

Lista de envíos​

{
"data": [
{
"id": "00000000-0000-4000-8000-000000000184",
"type": "WITHDRAWAL",
"subType": "EXTERNAL_CRYPTO",
"assetSymbol": "USDT",
"amount": "25000",
"fee": "0",
"total": "25000",
"status": "COMPLETED",
"createdAt": "2026-10-05T13:59:41.120Z",
"transactionHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"bankReference": null,
"assetFormat": "base",
"multiplier": "1",
"base": { "asset": "USDT", "amount": "25000", "fee": "0", "total": "25000" },
"withdrawalData": {
"networkId": "ETH",
"networkName": "Ethereum (ERC20)",
"networkNativeAsset": "ETH",
"evmChainId": 1,
"assetType": "ERC20",
"transactionHash": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"destinationAddress": "0x2222222222222222222222222222222222222222",
"destinationTag": null,
"sourceAddress": "0x1111111111111111111111111111111111111111",
"clientReferenceId": "skp-br-000184",
"networkFee": "0.000412",
"networkFeeAssetSymbol": "ETH",
"statusReason": null,
"updatedAt": "2026-10-05T14:03:05.118Z",
"completedAt": "2026-10-05T14:03:05.118Z"
}
}
],
"pagination": { "page": 1, "limit": 100, "totalItems": 1, "totalPages": 1 }
}

Lista de recepciones​

{
"data": [
{
"id": "00000000-0000-5000-8000-000000000501",
"type": "DEPOSIT",
"subType": "EXTERNAL_CRYPTO",
"assetSymbol": "USDT",
"amount": "24999",
"fee": "0",
"total": "24999",
"status": "COMPLETED",
"createdAt": "2026-10-05T14:07:30.004Z",
"transactionHash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"bankReference": null,
"senderName": null,
"senderNationalId": null,
"senderBankId": null,
"senderAccount": null,
"bankDescription": null,
"valueDate": null,
"assetFormat": "base",
"multiplier": "1",
"base": { "asset": "USDT", "amount": "24999", "fee": "0", "total": "24999" },
"depositData": {
"networkId": "TRON",
"networkName": "Tron (TRC20)",
"networkNativeAsset": "TRX",
"evmChainId": null,
"assetType": "TRC20",
"transactionHash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"sourceAddress": "T444444444444444444444444444444444",
"depositAddress": "T333333333333333333333333333333333",
"depositTag": null,
"statusReason": null,
"updatedAt": "2026-10-05T14:08:40.300Z",
"completedAt": "2026-10-05T14:08:40.300Z"
}
}
],
"pagination": { "page": 1, "limit": 100, "totalItems": 1, "totalPages": 1 }
}

Ver también: Bridge · Retiros · Depósitos · Paginación.