> ## Documentation Index
> Fetch the complete documentation index at: https://faxbeep.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Find your fax

> Find your test in the API by the time you sent it, by its sender, or by your email address.

There are three ways to find your test in the list of `GET /api/faxes`. Which one works depends on what reaches Faxbeep with your test.

| You sent | What reaches Faxbeep | Find it by |
| - | - | - |
| A fax by phone | Usually no sender ID | Time and page count |
| A fax by phone | A number or a unique station ID | Sender |
| A test by email | Always the address in the From line | Email address |

A test appears in the list when its processing is done: usually 1 to 2 minutes after the call ends, or after your machine sends the email.

## Two rules of the list

* **With no `since`, the list covers the last 24 hours only.** So `?from=X` gives an empty list (`[]`) if the last test of X is older. Add `since` to look further back, up to 30 days.
* **Encode the values.** `since` is an ISO 8601 time with an offset, for example `2026-10-01T14:25:00Z`. A date alone, or a time with no offset, answers 422. Use UTC with `Z`: it needs no encoding. Send each `+`, in a time offset or in `from`, as `%2B`. The code below lets the HTTP client encode the values.

## Find it

<Tabs>
  <Tab title="By time">
    Note the time just before you send the test. Then ask for the tests that arrived after it. Compare `page_count` and `received_at` with what you sent: other people send tests at the same time.

    <CodeGroup>
      ```bash curl theme={null}
      curl -sS --get "https://faxbeep.com/api/faxes" \
        --data-urlencode "since=2026-10-01T14:25:00Z" \
        --data-urlencode "limit=100"
      ```

      ```javascript Node theme={null}
      // Node 18 or later. Save as find.mjs and run: node find.mjs
      const params = new URLSearchParams({ since: "2026-10-01T14:25:00Z", limit: "100" });
      const res = await fetch(`https://faxbeep.com/api/faxes?${params}`);
      console.log(await res.json());
      ```

      ```python Python theme={null}
      # Python 3.8 or later. Standard library only.
      import json
      import urllib.parse
      import urllib.request

      params = urllib.parse.urlencode({"since": "2026-10-01T14:25:00Z", "limit": 100})
      # Set a User-Agent: the default one of urllib is refused with 403.
      req = urllib.request.Request(
          f"https://faxbeep.com/api/faxes?{params}", headers={"User-Agent": "my-fax-test/1.0"}
      )
      with urllib.request.urlopen(req) as res:
          print(json.load(res))
      ```
    </CodeGroup>
  </Tab>

  <Tab title="By sender">
    Use this when your fax arrives with a number or a [station ID](/developers/station-id) that only you use. Give the full value, not the masked one that faxbeep.com shows. `limit=1` gives the latest test of that sender.

    <CodeGroup>
      ```bash curl theme={null}
      curl -sS --get "https://faxbeep.com/api/faxes" \
        --data-urlencode "from=+15555550123" \
        --data-urlencode "limit=1"
      ```

      ```javascript Node theme={null}
      // Node 18 or later. Save as find.mjs and run: node find.mjs
      const params = new URLSearchParams({ from: "+15555550123", limit: "1" });
      const res = await fetch(`https://faxbeep.com/api/faxes?${params}`);
      console.log(await res.json());
      ```

      ```python Python theme={null}
      # Python 3.8 or later. Standard library only.
      import json
      import urllib.parse
      import urllib.request

      params = urllib.parse.urlencode({"from": "+15555550123", "limit": 1})
      # Set a User-Agent: the default one of urllib is refused with 403.
      req = urllib.request.Request(
          f"https://faxbeep.com/api/faxes?{params}", headers={"User-Agent": "my-fax-test/1.0"}
      )
      with urllib.request.urlopen(req) as res:
          print(json.load(res))
      ```
    </CodeGroup>

    The encoded query is `?from=%2B15555550123&limit=1`. A number with a bare `+` also works, but encode it: a station ID that starts with `+` works only as `%2B`.
  </Tab>

  <Tab title="By email">
    A test by email always has a sender: the address in the From line of the email. Case does not matter. Add `since`, so that an older test from the same address does not match.

    <CodeGroup>
      ```bash curl theme={null}
      curl -sS --get "https://faxbeep.com/api/faxes" \
        --data-urlencode "from=scanner@example.com" \
        --data-urlencode "since=2026-10-01T14:25:00Z"
      ```

      ```javascript Node theme={null}
      // Node 18 or later. Save as find.mjs and run: node find.mjs
      const params = new URLSearchParams({ from: "scanner@example.com", since: "2026-10-01T14:25:00Z" });
      const res = await fetch(`https://faxbeep.com/api/faxes?${params}`);
      console.log(await res.json());
      ```

      ```python Python theme={null}
      # Python 3.8 or later. Standard library only.
      import json
      import urllib.parse
      import urllib.request

      params = urllib.parse.urlencode({"from": "scanner@example.com", "since": "2026-10-01T14:25:00Z"})
      # Set a User-Agent: the default one of urllib is refused with 403.
      req = urllib.request.Request(
          f"https://faxbeep.com/api/faxes?{params}", headers={"User-Agent": "my-fax-test/1.0"}
      )
      with urllib.request.urlopen(req) as res:
          print(json.load(res))
      ```
    </CodeGroup>
  </Tab>
</Tabs>

Each call gives a JSON array, newest first, or `[]` if no test matches. The fields of each test are on the page [List faxes](/api-reference/faxes/list-faxes).

## Check that it is yours

* `received_at` is after the time you noted, and close to it.
* `page_count` is the number of pages you sent.
* `source` is `phone` for a fax by phone and `email` for a test by email.
* `from` is masked, as on faxbeep.com. See [How the sender shows](/results/sender). You cannot compare it with your full number.
* `view_url` opens the test on faxbeep.com, where you can see the page. `pdf_url` and `thumbnail_url` give the files.

To get the same test again later, call `GET /api/faxes/{slug}` with its `slug`. After 30 days, or after a removal, it answers 410.

<Note>
  Do not use the newest `received_at` that you saw as your next `since`. `received_at` is the time a test arrived, and a long fax can appear after a newer short one. Keep `since` at the time you noted until your test appears.
</Note>

## Next

<Columns cols={2}>
  <Card title="Station ID" icon="id-card" href="/developers/station-id">
    When `from` works for a fax by phone, and when it is shared.
  </Card>

  <Card title="Test in CI" icon="rotate" href="/developers/ci">
    A script that waits for your fax and stops after a time limit.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.