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 bridge | En la sección Bridge es… |
|---|---|
| Skipo le envía tokens a la contraparte | un 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 Skipo | una 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 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étodo | Ruta | Devuelve |
|---|---|---|
GET | /v2/bridge/deposit-addresses | Un 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.
| Campo | Tipo | Descripción |
|---|---|---|
assetSymbol | string | Código del activo liquidado, por ejemplo USDT. |
networkId | string | La red de la dirección, con el vocabulario de GET /v2/assets: BSC, ETH, TRON. |
networkName | string | Nombre de la red, solo para mostrar. |
address | string | La dirección de depósito del bridge en esa red. |
tag | string | null | null en BSC, ETH y TRON. Nunca "". |
tagRequired | boolean | false en BSC, ETH y TRON. |
tagType | string | null | null en BSC, ETH y TRON. |
tagLabel | string | null | null en BSC, ETH y TRON. |
minimumDeposit | string decimal | El 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ámetro | Descripción |
|---|---|
page | Número de página. Empieza en 1. Por defecto 1. |
limit | Elementos por página, de 1 a 100. Por defecto 25. |
startDate | Cota inferior inclusiva sobre createdAt, en ISO-8601. |
endDate | Cota superior exclusiva sobre createdAt, en ISO-8601. |
assetFormat | base o rebased (por defecto). En el bridge los dos dan las mismas cifras, con multiplier "1". |
assetSymbol | Código exacto del activo liquidado, por ejemplo USDT. |
status | PENDING, IN_PROGRESS, COMPLETED o FAILED, comparado como texto. Un valor desconocido responde una página vacía. |
subType | Solo EXTERNAL_CRYPTO tiene filas. Cualquier otro valor del enum responde una página vacía. |
transactionHash | El hash exacto de la transacción. Los dígitos hexadecimales coinciden en mayúscula o minúscula. |
clientReferenceId | Solo 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,
createdAtes 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:
subTypees siempreEXTERNAL_CRYPTO.feees siempre"0"yamountes igual atotal. En un envío,amountson exactamente los tokens enviados. En una recepción, es lo recibido en la cadena, truncado alamountIncrementdel activo.multiplieres"1"ybaserepite los valores de primer nivel con cualquierassetFormat.bankReferenceesnull. En las recepciones también sonnullsenderName,senderNationalId,senderBankId,senderAccount,bankDescriptionyvalueDate.- 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,
0xmás 64 dígitos hexadecimales en minúscula; en TRON, 64 dígitos hexadecimales en minúscula, sin prefijo. EltransactionHashde primer nivel es igual a la copia que va dentro dewithdrawalDataodepositData. - Una fila en estado final (
COMPLETEDoFAILED) no vuelve a cambiar.
withdrawalData
| Clave | Descripción |
|---|---|
networkId, networkName, networkNativeAsset, evmChainId, assetType | El bloque de la cadena, igual que en GET /v2/withdrawals. |
transactionHash | El hash del envío, igual al de primer nivel. |
destinationAddress | La dirección de la contraparte a la que se enviaron los tokens. |
destinationTag | null. |
sourceAddress | La dirección de custodia de Skipo que hizo el envío. |
clientReferenceId | La referencia que Skipo le dio a la contraparte para este envío. Es opaca: compárala tal cual. |
networkFee, networkFeeAssetSymbol | El 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. |
statusReason | null salvo en FAILED, donde vale REVERTED o DROPPED. |
updatedAt | Cuándo cambió la fila por última vez. |
completedAt | Cuándo pasó a COMPLETED; null en cualquier otro estado. |
depositData
| Clave | Descripción |
|---|---|
networkId, networkName, networkNativeAsset, evmChainId, assetType | El bloque de la cadena, igual que en GET /v2/deposits. |
transactionHash | El hash de la recepción, igual al de primer nivel. |
sourceAddress | La dirección que envió los tokens en la cadena. |
depositAddress | La dirección de depósito del bridge que recibió los tokens. |
depositTag | null. |
statusReason | null salvo en FAILED, donde vale DROPPED. |
updatedAt | Cuándo cambió la fila por última vez. |
completedAt | Cuándo pasó a COMPLETED; null en cualquier otro estado. |
Estados
status | En un envío | En una recepción |
|---|---|---|
PENDING | En 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_PROGRESS | En curso: la transacción se transmitió a la cadena y espera confirmaciones. | En curso: la transacción espera confirmaciones. |
COMPLETED | Final. Los tokens están en la dirección de la contraparte. | Final. Skipo acreditó la recepción. |
FAILED | Final. 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:
statusReason | Dónde | Significado |
|---|---|---|
REVERTED | Envíos | La transacción se ejecutó en la cadena y falló. No movió tokens. |
DROPPED | Envíos | La transacción nunca quedó final en la cadena: se descartó o se reemplazó. No movió tokens. |
DROPPED | Recepciones | La recepción falló y Skipo no la acreditará. |
Errores
| HTTP | code | Cuándo |
|---|---|---|
400 | validation_error | Un 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. |
404 | not_found | Una lectura por id de un id que no es un envío o una recepción del bridge de tu cuenta. |
502 | downstream_unavailable | Un 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.