> For the complete documentation index, see [llms.txt](https://docs.blinklabs.xyz/blink/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.blinklabs.xyz/blink/arbitrum/api-reference.md).

# API Reference

Blink's integration is designed to be as simple as possible, it only requires switching over to Blink's RPC node endpoint.

This endpoint mirrors the APIs found by other Arbitrum Node providers.

You can find your custom endpoint on your custom [dashboard](https://portal.blinklabs.xyz/dashboard?chain=arbitrum).

## Integration Steps

* Acquire custom RPC endpoint on our [dashboard](https://portal.blinklabs.xyz/dashboard?chain=arbitrum)
* Switch out existing RPC endpoint for the custom Blink endpoint: `https://arb.blinklabs.xyz/v1/{$API_KEY}`
* Track recoveries via Blink's dashboard

### Example request

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "method": "eth_sendRawTransaction",
    "params": [
        "0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833",
     ],
}
```

### Example response

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}
```

## eth\_sendRawTransactionSync

Blink supports `eth_sendRawTransactionSync` ([EIP-7966](https://eips.ethereum.org/EIPS/eip-7966)). It submits the transaction exactly like `eth_sendRawTransaction`, with the same MEV protection and recovery. It then waits for the transaction to be included and returns the receipt in the same call, so there is no need to poll `eth_getTransactionReceipt`.

{% hint style="info" %}
The timeout is always 1 second. The optional second parameter (a timeout in milliseconds) is accepted but ignored.
{% endhint %}

{% hint style="warning" %}
Send `eth_sendRawTransactionSync` as a single JSON-RPC request. Inside a batch request it is forwarded to the node directly and is not eligible for MEV recovery.
{% endhint %}

### Example request

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "method": "eth_sendRawTransactionSync",
    "params": [
        "0xf869018203e882520894f17f52151ebef6c7334fad080c5704d77216b732881bc16d674ec80000801ba02da1c48b670996dcb1f447ef9ef00b33033c48a4fe938f420bec3e56bfd24071a062e0aa78a81bf0290afbc3a9d8e9a068e6d74caa66c5e0fa8a46deaae96b0833"
    ]
}
```

### Example response

The result is the transaction receipt, in the same format as `eth_getTransactionReceipt`.

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "blockHash": "0xde038bbb07a0f939ce1d5f6898f97aa1ce01e8c256a871cab8c8ecd3aa617a2c",
        "blockNumber": "0x1e968cc8",
        "contractAddress": null,
        "cumulativeGasUsed": "0x530e",
        "effectiveGasPrice": "0x1312d00",
        "from": "0x8ba1f109551bd432803012645ac136ddd64dba72",
        "gasUsed": "0x530e",
        "gasUsedForL1": "0x106",
        "l1BlockNumber": "0x18f1640",
        "logs": [],
        "logsBloom": "0x000…000",
        "status": "0x1",
        "timeboosted": false,
        "to": "0xf17f52151ebef6c7334fad080c5704d77216b732",
        "transactionHash": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
        "transactionIndex": "0x1",
        "type": "0x0"
    }
}
```

### Timeout response

If there is no receipt within 1 second, the call returns error code `4` with the transaction hash in `data`. The transaction may still be included: poll `eth_getTransactionReceipt` with that hash.

```
{
    "id": 1,
    "jsonrpc": "2.0",
    "error": {
        "code": 4,
        "message": "The transaction was added to the transaction pool but wasn't processed within the designated timeout interval.",
        "data": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
    }
}
```

Other errors, such as `nonce too low` or `insufficient funds`, are returned as for `eth_sendRawTransaction`.

For full documentation of the available endpoints, we suggest referring to the Chainstack documentation: <https://docs.chainstack.com/reference/arbitrum-getting-started>
