
You cannot treat a CoinGecko print as an instant swap API public rate. If you POST create-order on a ticker or a quote you fetched hours ago, the receive amount, limits, or deposit address can disagree with the plan. Fetch the public rate for the pair, send amount, and rate mode first, record the executable fields, refresh if it aged, then create the order and copy only the new deposit address.
Summary: A public rate is a pair-and-amount swap quote, not a market-site ticker. Call GET /api/v1/rates/public/one with currency, network, claimedDepositAmount, and rateMode before you create. Record amountToGet, min/max, and updatedAt, re-fetch if that quote aged, then POST create and copy only the new deposit address. RevBit docs give no GET-rate countdown; the 12-minute Fixed lock starts after the order exists.
An API is a machine form: send a URL with pair and amount instead of clicking the widget. RevBit API v1 is no-auth. v2 needs an API key and HMAC SHA256, a signed stamp proving the request is yours. See the RevBit API docs. EU/EEA residents are not served; do not create for a restricted region.
Path: resolve coin plus network → GET public rate → record amountToGet and updatedAt → re-GET if aged → POST create with the same pair, amount, and rateMode → copy the new deposit address → log orderId and TxID.
How to call the public rate for pair and amount first – don’t POST create blind

A ticker like USDT is a label, not a full identity. Resolve send and receive as currencyTitle plus networkTitle through GET /api/v1/instruments/public. TRC-20 and ERC-20 are different USDT networks, so a ticker-only call can hit the wrong rail.
claimedDepositAmount is the size you intend to send, the “you send” box. rateMode is FIXED or FLOATING. v2 documents both on the same public-one endpoint, plus enableFixedRate and markup.
- Resolve send and receive as currencyTitle plus networkTitle via GET /api/v1/instruments/public.
- Set claimedDepositAmount to the exact send size you can broadcast.
- Choose rateMode FIXED or FLOATING before you request the quote.
- Call GET /api/v1/rates/public/one with that pair, amount, and rateMode.
- Stop on HTTP 422 or 406 instead of creating an order.
HTTP 422 means the pair is not supported. HTTP 406 means the amount is too low. Wait for a usable public-one quote before create.
Do: GET the public rate for pair, amount, and rateMode before any create. Don’t: skip the quote for a CoinGecko number.
How to treat amountToGet as the swap quote – don’t paste a ticker print

A public rate is the exchanger’s quote for this send, not a news-site price. The payload includes price, reversePrice, amountToGet (expected receive), depositRules.minAmount / maxAmount, and updatedAt. Plan against amountToGet. Terms 2.2: rates shown through the Services are indicative and may differ from outside sources. Do not assume v1 matches the widget bit for bit.
| Source | What it answers | Use it to POST create? |
|---|---|---|
| CoinGecko / CMC print | A broad market price | No |
| GET /api/v1/rates/public/one | amountToGet for this pair, amount, and rateMode, with updatedAt | Yes, after you confirm the quote is still fresh |
| Order field claimedPublicRate | The rate stored on that order | Log it; do not reuse it as a new quote |
Other swap APIs publish 30-second or 60-second quote timers. Those are not RevBit numbers. Do not import them. If min/max is unclear, stop; do not treat an undocumented sample as unlimited.
Do: plan the receive side from amountToGet on this GET. Don’t: create from a ticker tab or a quote you cannot re-fetch.
Record Fixed vs Floating, amountToGet, limits, and updatedAt – don’t create from memory

Write down rateMode, amountToGet, min/max, updatedAt, and enableFixedRate if present. v2 also documents markup. The v2 docs show a markup of 0.3 on a 1 BTC to USDT example: 49549.728053855135 * (1 – 0.3/100) = 49401.07886969357. Read the returned amountToGet after markup instead of redoing that math by hand.
Fixed is 1% plus network fee. After an order exists, that quote is frozen for 12 minutes under Terms 2.2.1. If the market moves more than 1.3% before the deposit is detected, the path can be a refund or a market rate. Floating is 0.5% plus network fee and is not fixed until funds arrive and the exchange completes. The 12-minute figure is the order lock, not a GET-rate TTL. Choose a mode you can broadcast in time in the Fixed vs Floating rate guide.
Optionally run the documented payout-address check, including memo or destination tag when needed. A memo is an extra payment reference, like an apartment number. v1 create does not support refundAddress right now, so do not rely on an automatic bounce.
Do: keep a written snapshot of rateMode, amountToGet, limits, and updatedAt. Don’t: treat the 12-minute Fixed lock as a timer on the GET itself.
Re-fetch if the quote aged – don’t reuse a stale GET in create-order
Public-rate docs give updatedAt, not a quoteId countdown. There is no documented GET-rate TTL to copy into a bot. If time passed, the market moved, or you changed amount or rateMode, GET public-one again immediately before create. Never attach an old GET to a new POST and hope amountToGet still matches.
Quote-to-order workflow:
Resolve pair → GET public-one (amount + rateMode) → record amountToGet and updatedAt → re-GET if aged → POST create with the same inputs → copy new depositAddress → log claimedPublicRate, orderId, TxID
If create would use a different amount than the last GET, stop. Quote and create must share pair, amount, and rateMode.
Do: re-GET as the last read before POST create. Don’t: store a morning quote and create from it later.
How to create the order, then copy the new deposit address – don’t pay an old one
POST /api/v1/orders/public/create with the same pair, amount, and rateMode you just quoted. The response includes claimedPublicRate, amountToGet, rateMode, and a per-order depositAddress. That address is a one-use pay-in reference. Copy only this response. A previous order’s address, a screenshot, or a chat paste is the wrong target.
For a one-off swap you can open the RevBit swap widget and follow the on-screen pair, amount, and rate mode. For an integration, treat the API deposit address as the only pay-in string. Match receive address and memo/tag to the payout wallet. See how to swap crypto on an instant exchange for the click path; both end with one fresh address, one claimed amount, one send.
Do: POST create only after a fresh matching GET, then copy depositAddress from that response. Don’t: reuse an old deposit address or split the send across two orders.
Log rate payload, order ID, and TxID – don’t send without a reconstruction trail
Save the GET payload, claimedPublicRate, orderId, addresses, amount, rateMode, then the TxID. A TxID is the public receipt number for the on-chain send. Official support can use those records; it never needs a seed phrase, private key, or login code.
If rateMode is FIXED, send only the claimed amount inside the 12-minute lock that starts after the order exists. If you miss that window, stop and use the expired-order deposit checklist instead of paying the old address again. Floating still needs the exact claimed send; receive is not locked until funds arrive and the exchange completes.
- Confirm the last GET matches pair, claimedDepositAmount, and rateMode.
- POST /api/v1/orders/public/create with those same values.
- Copy depositAddress from the create response only.
- Log GET payload, claimedPublicRate, orderId, addresses, and amount.
- Broadcast the claimed amount once (inside the 12-minute Fixed lock if FIXED).
- Save the TxID and track it on the matching network explorer.
- Do not send again while the first transfer is still unclear.
- Keep the log until the receive side is credited or official support closes the case.
A one-off swap can still use the homepage widget the same way: fresh order, fresh address, exact amount. A bot should repeat GET → create → copy address on every order, not cache a public rate across customers.
Do: reconstruct the quote from logs if anything looks off. Don’t: send a second transfer to “help” a pending send.
Frequently asked questions
Is the public API rate the same as the website widget?
Do not assume a bit-for-bit match. Use GET /api/v1/rates/public/one for the API path and the on-screen quote for a widget swap. Record amountToGet from the channel you will create in.
How long is a RevBit public rate valid?
Public-rate docs give updatedAt, not a GET countdown. Re-fetch immediately before create. The 12-minute figure is the Fixed lock after an order exists (Terms 2.2.1), not a timer on the GET.
What if the rate changes between GET rate and POST create?
Re-GET, then create with the same pair, amount, and rateMode. Log claimedPublicRate from the order. Do not send on the old GET number if create returned different fields.
Should I lock Fixed after reading the public rate?
Choose FIXED only when you can broadcast the claimed amount inside the 12-minute order lock. Choose FLOATING when a withdrawal may be slow. Reading the rate does not start that lock; creating the order does.
What do HTTP 422 and 406 mean on the public rate call?
422 means the pair is not supported. 406 means the amount is too low. Stop, fix pair or amount, and GET again. Do not POST create against an error body.
Can I reuse a deposit address from an earlier quote?
No. Copy depositAddress only from this order’s create response. An old address is a different pay-in reference and can miss automatic detection.