You can reach us easily at support@skip.build or in our developer support channel on Telegram
Many teams use Skip Go to make it easier for them to build multi-chain flows, including:
More than 70+. We support:
…with more coming soon!
…with more coming soon!
…with many more coming soon
Please see the Chain Support Requirements document to ensure your chain meets the necessary requirements and submit the chain support request form linked in that doc.
Please complete the necessary steps detailed in the Token & Route Support Requirements doc.
Please complete the necessary steps detailed in the Token & Route Support Requirements doc for the destination chain and token in question.
Please see the Swap Venue Requirements page to ensure your DEX meets the necessary requirements then submit the swap venue request form linked in that doc.
15-30 minutes
You need to request an API key from the core team to use Skip Go without limitations.
Pass your API key into all requests with the client_id
parameter.
No, not at this time. We offer unlimited usage at zero cost.
In the future we will introduce two pricing plans:
Join our Discord and select the “Skip Go Developer” role to share your questions and feedback.
No.
Users are responsible for the transactions they sign in all cases:
Integrators are solely and completely responsible for building UIs that maximally protect users from harming themselves by swapping or transferring at unfavorable prices. To help facilitate this goal, we provide:
No
No
Skip accepts no legal, financial, or operational responsibility for the applications the integrators of the Skip Go API create using its data and services. Skip also accepts no legal, financial, or operational responsibility for the positive or negative financial outcomes of the swaps, transfers, and other transactions that end users may create in these interfaces.
Even in the event a user lost funds as a result of a bug, Skip does not claim any legal, financial, or practical liability for lost funds. In these cases, users may report the bug to Skip’s bug bounty program.
Skip may provide a financial bug bounty of up to $25,000 as compensation to users who report a reproducible catastrophic failure of a smart contract or other piece of software that the Skip team developed. Examples of catastrophic failures include:
The size of the bug payment is determined at Skip’s sole discretion. It may depend on a variety of factors, including: quality, accuracy, and timeliness of the report & severity/exploitability of the bug. Skip is not legally obligated to provide any payment amount.
In the event a user lost funds as a result of a bug, Skip does not claim any legal, financial, or practical liability for lost funds. The size of the bug bounty will not depend directly or indirectly on the amount of funds the user lost. The bug bounty does not constitute a refund under any definition. It is a reward for identifying and characterizing gross failures in intended behavior of the Skip software.
Please get in touch with our team at support@skip.build if you believe you have a bug to report.
You can find the Swagger page here: https://api-swagger.skip.build. And you can find the OpenAPI generating doc here: https://api-swagger.skip.build/swagger.yml.
/fungible/msgs
and /fungible/msgs_direct
?ibc-hooks
: Enables the Skip Go swap contracts to be executed as callbacks of IBC transfers, which enables constructing transactions that can transfer tokens to a chain with a swap venue, perform a swap, and transfer them out — without multiple signing events / transactions.
ibc-hooks
or equivalent functionalityPacket-forward-middleware
(PFM): Enables incoming IBC transfers from one chain to atomically initiate outgoing transfers to other chains. This allows the chain with PFM to function as the intermediate chain on a multi-hop route. This is especially valuable for chains that issue assets for use throughout the interchain (e.g. Stride + stATOM, Noble + USDC, Axelar + axlUSDC)amount_out
returned by /route
. More plainly, the Skip Go API subtracts off expected affiliate fees prior to the amount_out
calculation, so that it represents an accurate estimate of what the user will receive at the end of the swap, net of fees. To be exact, the user will probably receive more than the amount out because the actual fee is not known at the time of this calculation / estimate. It’s not known until later when slippage is set. So the user will end up paying slippage_percent
*amount_out
less than the API predicts. This is good for the user because the estimated amount out will likely be lower than the actual amount they receive, offering a buffer that protects the user from the effects of slippage./assets_from_source
only return assets that are reachable via transfers but not swaps?We’re considering adding support for swappable destinations to /assets_from_source
, but we’re not prioritizing it because almost every asset is reachable via swapping from every other asset. So for 99.99% of use cases, this endpoint would just return a massive amount of fairly uninformative data, if we added destinations reachable via swaps.
There are two common reasons Skip Go API is missing a route that a user thinks might exist:
A common gotcha: /assets_from_source
only returns assets reachable in a single transaction by default. If you’d like to have access to routes that require multiple transactions, set the allow_multi_tx
flag to true
in the input.
It depends on many factors, including how many relayers are covering a particular channel, block times, the time-to-finality of the source chain, whether relayers are live, how many packets relayers are waiting to batch together, and much more…
In short, it can range from several seconds to minutes (or never) in the worst case. After a timeout window, a packet won’t be valid on the destination chain when it gets relayed. This timeout is set to 5 minutes for all packets created via the Skip Go API. It’s important to understand what happens to user tokens in the event of timeouts. You can read about that in Cross-chain Failure Cases
For now, we recommend making a small warning or disclaimer to users on your application, similar to the following:
This swap contains at least one IBC transfer.
IBC transfers usually take 10-30 seconds, depending on block times + how quickly relayers ferry packets. But relayers frequently crash or fail to relay packets for hours or days on some chains (especially chains with low IBC volume).
At this time, [OUR APPLICATION]does not relay packets itself, so your swap/transfer may hang in an incomplete state. If this happens, your funds are stuck, not lost. They will be returned to you once a relayer comes back online and informs the source chain that the packet has timed out. Timeouts are set to 5 minutes but relayers may take longer to come online and process the timeout.
IBC relayers do not receive payments for relaying user packets or for relaying light client updates. In fact, they have to pay gas for the every packet they relay. That means relaying is strictly a charitable, money-losing operation with fixed infrastructure costs from running nodes + the relayer process, as well as variable costs from user gas.
In general, transfers take as long as it takes for the source chain to “finalize”. That means:
This happens because many of the bridges (which Skip rely on) take fees to pay for gas and the cost of operating their protocol.
We recommend setting Cosmos chain gas prices using the chainapsis keplr-chain-registry: https://github.com/chainapsis/keplr-chain-registry. In our experience, this registry overestimates gas prices somewhat — but this leads to a very good UX in Cosmos because:
Soon, the Skip Go API will surface recommended gas price too, and we will release a client-side library that will abstract away this area of concern.
We recommend using the Gas and Fee Tooling available in the Skip Go Client TypeScript Package.
This means we may make breaking changes to them at any time.
cumulative_fee_bps
in /route
mean?This is where you specify the fee amount in bps aka “bips”. (1 bp = 1 / 100th of a percent; 100 bps = 1%)
By specifying it in route, the Skip Go API can adjust the quote that it gives back to you, so that it shows output token estimate net of fees. This ensures the amount the end user gets out of the swap always aligns with their expectations.
The parameter uses the word “cumulative” (i.e. summing over a set) because the API supports multiple partners charging affiliate fees. This parameter should be set to the sum of all of those component fees. (For example, if a widget provider charges a 5 bp fee, and the frontend developer integrating that widget charges a 10 bp fee, cumulative_fee_bps=15
)
You can reach us easily at support@skip.build or in our developer support channel on Telegram
Many teams use Skip Go to make it easier for them to build multi-chain flows, including:
More than 70+. We support:
…with more coming soon!
…with more coming soon!
…with many more coming soon
Please see the Chain Support Requirements document to ensure your chain meets the necessary requirements and submit the chain support request form linked in that doc.
Please complete the necessary steps detailed in the Token & Route Support Requirements doc.
Please complete the necessary steps detailed in the Token & Route Support Requirements doc for the destination chain and token in question.
Please see the Swap Venue Requirements page to ensure your DEX meets the necessary requirements then submit the swap venue request form linked in that doc.
15-30 minutes
You need to request an API key from the core team to use Skip Go without limitations.
Pass your API key into all requests with the client_id
parameter.
No, not at this time. We offer unlimited usage at zero cost.
In the future we will introduce two pricing plans:
Join our Discord and select the “Skip Go Developer” role to share your questions and feedback.
No.
Users are responsible for the transactions they sign in all cases:
Integrators are solely and completely responsible for building UIs that maximally protect users from harming themselves by swapping or transferring at unfavorable prices. To help facilitate this goal, we provide:
No
No
Skip accepts no legal, financial, or operational responsibility for the applications the integrators of the Skip Go API create using its data and services. Skip also accepts no legal, financial, or operational responsibility for the positive or negative financial outcomes of the swaps, transfers, and other transactions that end users may create in these interfaces.
Even in the event a user lost funds as a result of a bug, Skip does not claim any legal, financial, or practical liability for lost funds. In these cases, users may report the bug to Skip’s bug bounty program.
Skip may provide a financial bug bounty of up to $25,000 as compensation to users who report a reproducible catastrophic failure of a smart contract or other piece of software that the Skip team developed. Examples of catastrophic failures include:
The size of the bug payment is determined at Skip’s sole discretion. It may depend on a variety of factors, including: quality, accuracy, and timeliness of the report & severity/exploitability of the bug. Skip is not legally obligated to provide any payment amount.
In the event a user lost funds as a result of a bug, Skip does not claim any legal, financial, or practical liability for lost funds. The size of the bug bounty will not depend directly or indirectly on the amount of funds the user lost. The bug bounty does not constitute a refund under any definition. It is a reward for identifying and characterizing gross failures in intended behavior of the Skip software.
Please get in touch with our team at support@skip.build if you believe you have a bug to report.
You can find the Swagger page here: https://api-swagger.skip.build. And you can find the OpenAPI generating doc here: https://api-swagger.skip.build/swagger.yml.
/fungible/msgs
and /fungible/msgs_direct
?ibc-hooks
: Enables the Skip Go swap contracts to be executed as callbacks of IBC transfers, which enables constructing transactions that can transfer tokens to a chain with a swap venue, perform a swap, and transfer them out — without multiple signing events / transactions.
ibc-hooks
or equivalent functionalityPacket-forward-middleware
(PFM): Enables incoming IBC transfers from one chain to atomically initiate outgoing transfers to other chains. This allows the chain with PFM to function as the intermediate chain on a multi-hop route. This is especially valuable for chains that issue assets for use throughout the interchain (e.g. Stride + stATOM, Noble + USDC, Axelar + axlUSDC)amount_out
returned by /route
. More plainly, the Skip Go API subtracts off expected affiliate fees prior to the amount_out
calculation, so that it represents an accurate estimate of what the user will receive at the end of the swap, net of fees. To be exact, the user will probably receive more than the amount out because the actual fee is not known at the time of this calculation / estimate. It’s not known until later when slippage is set. So the user will end up paying slippage_percent
*amount_out
less than the API predicts. This is good for the user because the estimated amount out will likely be lower than the actual amount they receive, offering a buffer that protects the user from the effects of slippage./assets_from_source
only return assets that are reachable via transfers but not swaps?We’re considering adding support for swappable destinations to /assets_from_source
, but we’re not prioritizing it because almost every asset is reachable via swapping from every other asset. So for 99.99% of use cases, this endpoint would just return a massive amount of fairly uninformative data, if we added destinations reachable via swaps.
There are two common reasons Skip Go API is missing a route that a user thinks might exist:
A common gotcha: /assets_from_source
only returns assets reachable in a single transaction by default. If you’d like to have access to routes that require multiple transactions, set the allow_multi_tx
flag to true
in the input.
It depends on many factors, including how many relayers are covering a particular channel, block times, the time-to-finality of the source chain, whether relayers are live, how many packets relayers are waiting to batch together, and much more…
In short, it can range from several seconds to minutes (or never) in the worst case. After a timeout window, a packet won’t be valid on the destination chain when it gets relayed. This timeout is set to 5 minutes for all packets created via the Skip Go API. It’s important to understand what happens to user tokens in the event of timeouts. You can read about that in Cross-chain Failure Cases
For now, we recommend making a small warning or disclaimer to users on your application, similar to the following:
This swap contains at least one IBC transfer.
IBC transfers usually take 10-30 seconds, depending on block times + how quickly relayers ferry packets. But relayers frequently crash or fail to relay packets for hours or days on some chains (especially chains with low IBC volume).
At this time, [OUR APPLICATION]does not relay packets itself, so your swap/transfer may hang in an incomplete state. If this happens, your funds are stuck, not lost. They will be returned to you once a relayer comes back online and informs the source chain that the packet has timed out. Timeouts are set to 5 minutes but relayers may take longer to come online and process the timeout.
IBC relayers do not receive payments for relaying user packets or for relaying light client updates. In fact, they have to pay gas for the every packet they relay. That means relaying is strictly a charitable, money-losing operation with fixed infrastructure costs from running nodes + the relayer process, as well as variable costs from user gas.
In general, transfers take as long as it takes for the source chain to “finalize”. That means:
This happens because many of the bridges (which Skip rely on) take fees to pay for gas and the cost of operating their protocol.
We recommend setting Cosmos chain gas prices using the chainapsis keplr-chain-registry: https://github.com/chainapsis/keplr-chain-registry. In our experience, this registry overestimates gas prices somewhat — but this leads to a very good UX in Cosmos because:
Soon, the Skip Go API will surface recommended gas price too, and we will release a client-side library that will abstract away this area of concern.
We recommend using the Gas and Fee Tooling available in the Skip Go Client TypeScript Package.
This means we may make breaking changes to them at any time.
cumulative_fee_bps
in /route
mean?This is where you specify the fee amount in bps aka “bips”. (1 bp = 1 / 100th of a percent; 100 bps = 1%)
By specifying it in route, the Skip Go API can adjust the quote that it gives back to you, so that it shows output token estimate net of fees. This ensures the amount the end user gets out of the swap always aligns with their expectations.
The parameter uses the word “cumulative” (i.e. summing over a set) because the API supports multiple partners charging affiliate fees. This parameter should be set to the sum of all of those component fees. (For example, if a widget provider charges a 5 bp fee, and the frontend developer integrating that widget charges a 10 bp fee, cumulative_fee_bps=15
)