curl --request POST \
--url https://mpc.hex-api.app/bridge/deposits \
--header 'Content-Type: application/json' \
--data '
{
"chain_id": 1100,
"tx": "3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f",
"intent_account": "alice.near"
}
'import requests
url = "https://mpc.hex-api.app/bridge/deposits"
payload = {
"chain_id": 1100,
"tx": "3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f",
"intent_account": "alice.near"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
chain_id: 1100,
tx: '3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f',
intent_account: 'alice.near'
})
};
fetch('https://mpc.hex-api.app/bridge/deposits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mpc.hex-api.app/bridge/deposits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chain_id' => 1100,
'tx' => '3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f',
'intent_account' => 'alice.near'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://mpc.hex-api.app/bridge/deposits"
payload := strings.NewReader("{\n \"chain_id\": 1100,\n \"tx\": \"3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f\",\n \"intent_account\": \"alice.near\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://mpc.hex-api.app/bridge/deposits")
.header("Content-Type", "application/json")
.body("{\n \"chain_id\": 1100,\n \"tx\": \"3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f\",\n \"intent_account\": \"alice.near\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mpc.hex-api.app/bridge/deposits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"chain_id\": 1100,\n \"tx\": \"3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f\",\n \"intent_account\": \"alice.near\"\n}"
response = http.request(request)
puts response.read_body{
"recorded": true,
"deposit_hash": "6QPkTPp7EKZytMtEuvRmqGBBMMuwf4rrX4JjAoiuCYnT",
"deposit": {
"id": 812,
"chain_id": 1100,
"tx_hash": "3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f",
"intent_account": "alice.near",
"nonce": null,
"token": null,
"amount": null,
"receiver": null,
"near_tx": null,
"status": "registered",
"attempts": 0,
"last_error": null,
"created_at": 1792944180000,
"updated_at": 1792944180000
}
}Record a deposit a user just sent
Records a deposit by its source tx, with the account it is for (whose receivers are registered with it). The tx is read on its chain first: 422 when it made no bridge deposit or reverted, when the deposit’s receiver is not the account’s NEAR Intents receiver, or when the chain is one this service cannot read (Solana, TRON). A deposit read on chain is kept with its fields (nonce, token, amount, receiver) and the account its receiver is; a tx the chain does not show yet is kept as a claim and checked again later (dropped if it never shows). The row is unique on (chain_id, tx). Nothing is credited: call POST /relay/deposit for that.
curl --request POST \
--url https://mpc.hex-api.app/bridge/deposits \
--header 'Content-Type: application/json' \
--data '
{
"chain_id": 1100,
"tx": "3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f",
"intent_account": "alice.near"
}
'import requests
url = "https://mpc.hex-api.app/bridge/deposits"
payload = {
"chain_id": 1100,
"tx": "3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f",
"intent_account": "alice.near"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
chain_id: 1100,
tx: '3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f',
intent_account: 'alice.near'
})
};
fetch('https://mpc.hex-api.app/bridge/deposits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mpc.hex-api.app/bridge/deposits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'chain_id' => 1100,
'tx' => '3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f',
'intent_account' => 'alice.near'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://mpc.hex-api.app/bridge/deposits"
payload := strings.NewReader("{\n \"chain_id\": 1100,\n \"tx\": \"3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f\",\n \"intent_account\": \"alice.near\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://mpc.hex-api.app/bridge/deposits")
.header("Content-Type", "application/json")
.body("{\n \"chain_id\": 1100,\n \"tx\": \"3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f\",\n \"intent_account\": \"alice.near\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mpc.hex-api.app/bridge/deposits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"chain_id\": 1100,\n \"tx\": \"3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f\",\n \"intent_account\": \"alice.near\"\n}"
response = http.request(request)
puts response.read_body{
"recorded": true,
"deposit_hash": "6QPkTPp7EKZytMtEuvRmqGBBMMuwf4rrX4JjAoiuCYnT",
"deposit": {
"id": 812,
"chain_id": 1100,
"tx_hash": "3b1f6c0e9d2a47c58e6f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f",
"intent_account": "alice.near",
"nonce": null,
"token": null,
"amount": null,
"receiver": null,
"near_tx": null,
"status": "registered",
"attempts": 0,
"last_error": null,
"created_at": 1792944180000,
"updated_at": 1792944180000
}
}Body
Chain ids are omni's (v2_1.omni.hot.tg), not always the chain's own: EVM chains use their EIP-155 id (Ethereum 1, Optimism 10, BNB 56, Polygon 137, Monad 143, X Layer 196, Base 8453, Arbitrum 42161, Avalanche 43114, ...); the others have omni's numbers: Solana 1001, NEAR 1010, Stellar 1100, TON 1117 (TON v1, 1111, is dead), Juno 4444118, Gonka 4444119.
x >= 11100
1117
137
4444119
Response
The row, or recorded: false without the database.