# API

#### Detailed Developer Guide for Using `api.ghosttag.xyz/v1/getTransactions`

**Endpoint Overview**

The `api.spot.pizza/v1/getTransactions` endpoint allows developers to fetch Ethereum transaction tag data filtered by various parameters.

**Base URL**

```plaintext
https://api.ghosttag.xyz/v1/getTransactions
```

**Supported Query Parameters**

* `address`: Filter by transactions involving this address (either sender or receiver).
* `fromBlock`: Filter by transactions starting from this block number.
* `toBlock`: Filter by transactions up to this block number.
* `txHash`: Filter by a specific transaction hash.
* `fromTime`: Filter by transactions from this timestamp (seconds since Unix epoch).
* `toTime`: Filter by transactions up to this timestamp (seconds since Unix epoch).
* `chainId`: Filter by chain ID (e.g., 1 for Ethereum mainnet).
* `dataHex`: Filter by transactions containing this hexadecimal data.
* `dataString`: Filter by transactions containing this string data.
* `key`: Filter by transactions containing this specific key in the parsed data.
* `fromAddress`: Filter by transactions from this address.
* `toAddress`: Filter by transactions to this address.
* `tag`: Filter by transactions containing this tag in the string data.

**Making Requests**

**Using `axios` in Node.js**

First, install `axios` if you haven't already:

```bash
bashCopy codenpm install axios
```

Create a script to fetch transactions:

<pre class="language-javascript"><code class="lang-javascript"><strong>const axios = require('axios');
</strong>
async function fetchTransactions() {
    try {
        const response = await axios.get('https://api.spot.pizza/v1/getTransactions', {
            params: {
                address: '0xYourAddress',
                fromBlock: 1000,
                toBlock: 2000,
                chainId: 1,
                fromTime: Math.floor(new Date('2023-01-01').getTime() / 1000),
                toTime: Math.floor(new Date('2023-01-31').getTime() / 1000),
                dataString: 'yourDataString'
            }
        });
        console.log(response.data);
    } catch (error) {
        console.error('Error fetching transactions:', error);
    }
}

fetchTransactions();
</code></pre>

**Using Fetch API in Browser**

```javascript
javascriptCopy codeasync function fetchTransactions() {
    const url = new URL('https://api.spot.pizza/v1/getTransactions');
    const params = {
        address: '0xYourAddress',
        fromBlock: 1000,
        toBlock: 2000,
        chainId: 1,
        fromTime: Math.floor(new Date('2023-01-01').getTime() / 1000),
        toTime: Math.floor(new Date('2023-01-31').getTime() / 1000),
        dataString: 'yourDataString'
    };

    Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));

    try {
        const response = await fetch(url);
        const data = await response.json();
        console.log(data);
    } catch (error) {
        console.error('Error fetching transactions:', error);
    }
}

fetchTransactions();
```

**Example Response**

A successful response from the API will return a JSON array of transactions that match the specified filters. Each transaction object may contain the following fields:

* `chainId`: The ID of the blockchain network.
* `blockNumber`: The block number of the transaction.
* `hash`: The transaction hash.
* `from`: The sender's address.
* `to`: The receiver's address.
* `value`: The value transferred in the transaction (in ETH).
* `timestamp`: The timestamp of the transaction.
* `dataHex`: The transaction data in hexadecimal format.
* `dataString`: The transaction data in string format.
* `dataParsed`: The parsed data from the transaction.

Example:

```json
[
  {
    "timestampAdded": "2024-06-16T17:18:58.000Z",
    "chainId": 8453,
    "blockNumber": 15884494,
    "hash": "0x627735e5dfee8539cbd1a29e3fe89a59839f3ab3ae4f630ba0711f6816339eb3",
    "from": "0x14b214ca36249b516b59401b3b221cb87483b53c",
    "to": "0xdd528829749d6a4656d84cddbdc65e7dc5b350a7",
    "value": 0,
    "timestamp": "2024-06-16T17:18:55.000Z",
    "dataHex": "0x1337",
    "dataString": "\u00137",
    "dataParsed": "{}"
  },
  {
    "timestampAdded": "2024-06-16T17:18:34.000Z",
    "chainId": 8453,
    "blockNumber": 15884482,
    "hash": "0xba5f4f70d3cab08142fb8ff352d1ee82f96a0a91f0c90f3dd9e4aa4308a64510",
    "from": "0x14b214ca36249b516b59401b3b221cb87483b53c",
    "to": "0xdd528829749d6a4656d84cddbdc65e7dc5b350a7",
    "value": 0,
    "timestamp": "2024-06-16T17:18:31.000Z",
    "dataHex": "0x6c6f6c",
    "dataString": "lol",
    "dataParsed": "{}"
  },
  {
    "timestampAdded": "2024-06-16T17:17:33.000Z",
    "chainId": 8453,
    "blockNumber": 15884451,
    "hash": "0x7e02a6aef33120974ae95e8079983b3b48f575e15d6318eedcb5f5bf5d4bef8e",
    "from": "0x14b214ca36249b516b59401b3b221cb87483b53c",
    "to": "0xdd528829749d6a4656d84cddbdc65e7dc5b350a7",
    "value": 0,
    "timestamp": "2024-06-16T17:17:29.000Z",
    "dataHex": "0x7b2274616731223a226273222c2274616732223a226c6f6c227d",
    "dataString": "{\"tag1\":\"bs\",\"tag2\":\"lol\"}",
    "dataParsed": "{\"tag1\": \"bs\", \"tag2\": \"lol\"}"
  }
]
```

**Error Handling**

If the request fails, the API will return an error response. Common error codes include:

* `400 Bad Request`: Invalid query parameters.
* `404 Not Found`: No transactions match the specified filters.
* `500 Internal Server Error`: An unexpected server error occurred.

#### Conclusion

Using the `getTransactions` endpoint of the `api.spot.pizza` service, developers can fetch and filter Ethereum transactions based on various parameters. This guide provides the necessary information to make successful requests and handle responses.
