Skip to main content
These are the v1 (pre-BLS) docs, kept for reference — this page describes the retired flow. The current design is under v2 in the version picker.
Liquidity advertisements (ads) are the core primitive of the ProofBridge marketplace. A Maker creates an ad to signal that they are willing to provide liquidity on a specific cross-chain route — for example, locking wETH on Stellar so bridgers can receive ETH on Ethereum. The ad lifecycle moves through several states (ACTIVE, PAUSED, EXHAUSTED, CLOSED) as the Maker manages their liquidity. Most ad endpoints return blockchain transaction data (contract address, signature, auth token) that your application must submit to the smart contract to finalize the operation on-chain. After the on-chain transaction is confirmed, call the corresponding /confirm endpoint to notify the relayer.
All amounts are expressed in the smallest unit of the token (e.g., wei for EVM tokens, stroops for Stellar). Always pass amounts as decimal strings, not numbers, to avoid integer overflow.

GET /v1/ads

List ads with optional filters. Returns a paginated list.

Query parameters

string
Filter by route UUID. Only ads that belong to this route are returned.
string
Filter by the ad creator’s blockchain address.
number
Filter by the chain ID of the source (ad) token.
number
Filter by the chain ID of the destination (order) token.
string
Filter by the UUID of the source token.
string
Filter by the UUID of the destination token.
string
Filter by ad status. One of "ACTIVE", "PAUSED", "EXHAUSTED", or "CLOSED".
string
Pagination cursor from a previous response’s nextCursor field.
number
default:"25"
Number of results to return per page.

Response fields

Ad[]
required
Array of ad objects. See the Ad object fields section below.
string | null
required
Cursor for the next page. null when you have reached the last page.

GET /v1/ads/:id

Retrieve a single ad by its UUID.

Path parameters

string
required
UUID of the ad to retrieve.

Response fields

Returns a single Ad object.

POST /v1/ads/create

Create a new liquidity ad. The response contains signed transaction data that you must submit to the AdManager smart contract on-chain to activate the ad. After the transaction is mined, call POST /v1/ads/:id/confirm with the transaction hash. Requires authentication.

Request body

string
required
UUID of the route this ad will serve. Determines the source and destination token pair.
string
required
The destination blockchain address where the Maker will receive bridged funds.
string
required
Initial amount to deposit into the ad pool, in the smallest token unit (e.g., "1000000000" for 1000 USDC with 6 decimals).
string
Minimum trade amount the ad will accept, in the smallest token unit. Optional.
string
Maximum trade amount the ad will accept, in the smallest token unit. Optional.
object
Arbitrary JSON metadata to associate with the ad (e.g., display name, fee rate).

Response fields

string
required
Chain ID where the AdManager contract is deployed.
string
required
Address of the AdManager contract to call.
string
required
Relayer signature authorizing the transaction.
string
Relayer signer public key. Returned for Stellar chains only.
string
required
Request authorization token to pass to the contract.
number
required
Seconds until the signed request expires and must be re-requested.
string
required
The relayer-assigned identifier for this ad.
string
required
Token contract address for the ad (source) token.
string
required
Initial funding amount confirmed by the relayer.
string
required
Chain ID of the destination (order) chain.
string
required
Recipient address for the ad on the source chain.
string
required
Hash of the relayer-signed request, used for on-chain verification.
string
required
Chain family of the ad contract: "EVM" or "STELLAR".

POST /v1/ads/:id/fund

Add more tokens to an existing ad’s liquidity pool. Returns signed transaction data to submit to the AdManager contract. After the transaction is confirmed, call POST /v1/ads/:id/confirm. Requires authentication.

Path parameters

string
required
UUID of the ad to fund.

Request body

string
required
Amount to add to the pool, in the smallest token unit.

Response fields

string
required
Chain ID of the AdManager contract.
string
required
Address of the AdManager contract to call.
string
required
Relayer signature for this funding request.
string
required
Request authorization token to pass to the contract.
number
required
Seconds until this signed request expires.
string
required
The ad identifier.
string
required
Funding amount confirmed by the relayer.
string
required
Hash of the relayer-signed request.
string
required
"EVM" or "STELLAR".

POST /v1/ads/:id/withdraw

Initiate a partial withdrawal from an ad’s pool. Returns signed transaction data to submit to the AdManager contract. After the transaction is confirmed, call POST /v1/ads/:id/confirm. Requires authentication.

Path parameters

string
required
UUID of the ad to withdraw from.

Request body

string
required
Amount to withdraw from the pool, in the smallest token unit.
string
required
Destination address to receive the withdrawn funds.

Response fields

string
required
Chain ID of the AdManager contract.
string
required
Address of the AdManager contract to call.
string
required
Relayer signature for this withdrawal request.
string
required
Request authorization token.
number
required
Seconds until this signed request expires.
string
required
The ad identifier.
string
required
Withdrawal amount confirmed by the relayer.
string
required
Destination address for the withdrawn funds.
string
required
Hash of the relayer-signed request.
string
required
"EVM" or "STELLAR".

POST /v1/ads/:id/confirm

Notify the relayer that a previously-initiated blockchain transaction (create, fund, or withdraw) has been confirmed on-chain. This updates the ad’s state in the relayer database. Requires authentication.

Path parameters

string
required
UUID of the ad.

Request body

string
required
Transaction hash of the confirmed on-chain transaction.
string
Optional additional signature for the confirmation.

Response fields

string
required
UUID of the confirmed ad.
boolean
required
true when the relayer successfully recorded the confirmation.

PATCH /v1/ads/:id/update

Update mutable parameters on an existing ad. You can change the ad’s status, min/max trade amounts, or metadata without an on-chain transaction. Requires authentication.

Path parameters

string
required
UUID of the ad to update.

Request body

string
New status for the ad. Must be "ACTIVE" or "PAUSED".
string
New minimum trade amount in the smallest token unit.
string
New maximum trade amount in the smallest token unit.
object
Updated metadata to replace the existing ad metadata.

Response fields

string
required
UUID of the updated ad.
string
required
Address of the ad creator.
string | null
required
Updated minimum amount, or null if unset.
string | null
required
Updated maximum amount, or null if unset.
any
required
Updated metadata.

POST /v1/ads/:id/close

Permanently close an ad and withdraw all remaining funds. Returns signed transaction data to submit to the AdManager contract. This action is irreversible. Requires authentication.
Closing an ad is permanent. Any active trades against this ad must be settled before closing.

Path parameters

string
required
UUID of the ad to close.

Request body

string
required
Address to receive the remaining pool balance when the ad is closed.

Response fields

string
required
Chain ID of the AdManager contract.
string
required
Address of the AdManager contract to call.
string
required
Relayer signature for this close request.
string
required
Request authorization token.
number
required
Seconds until this signed request expires.
string
required
The ad identifier.
string
required
Destination address for the remaining funds.
string
required
Hash of the relayer-signed request.
string
required
"EVM" or "STELLAR".

Ad object fields

The following fields appear on every ad object returned by GET /v1/ads and GET /v1/ads/:id.
string
required
UUID of the ad.
string
required
Blockchain address of the Maker who created the ad.
string
required
UUID of the cross-chain route this ad serves.
string
required
UUID of the source (ad) token.
string
required
UUID of the destination (order) token.
string
required
Total amount ever deposited into this ad’s pool, in the smallest token unit.
string
required
Current available (unlocked) balance in the pool, in the smallest token unit.
string | null
required
Minimum trade amount the ad accepts, or null if no minimum is set.
string | null
required
Maximum trade amount the ad accepts, or null if no maximum is set.
string
required
Current ad status: "ACTIVE", "PAUSED", "EXHAUSTED", or "CLOSED".
any
Arbitrary metadata set by the Maker. Can be null.
object
required
object
required
Same structure as adToken, for the destination token.
string
required
ISO 8601 timestamp of when the ad was created.
string
required
ISO 8601 timestamp of the last update to the ad.