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

# Quickstart

> Sign up, get your key and look up your first number.

**1. Sign up**

Create an account at [mobileintelapi.com/app/sign-up](https://mobileintelapi.com/app/sign-up). You can sign up with Google or with your work email.

**2. Copy your API key**

Your key is shown on the Get started page right after you sign up, and you can create more under **API keys**. Keep it secret.

**3. Look up a number**

Send the number as E.164 with the `+` encoded as `%2B`, or as 10 bare digits. Every request needs a real `User-Agent` header (see the warning below).

```bash cURL theme={null}
curl "https://mobileintelapi.com/api/v1/verify?number=%2B14169670000" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "User-Agent: my-app/1.0"
```

```python Python theme={null}
import requests

r = requests.get(
    "https://mobileintelapi.com/api/v1/verify",
    params={"number": "+14169670000"},  # requests encodes the + for you
    headers={"X-API-Key": "YOUR_API_KEY", "User-Agent": "my-app/1.0"},
    timeout=30,
)
r.raise_for_status()
result = r.json()
print(result["verdict"], result["phone_type"], result["carrier"])
```

```javascript Node theme={null}
const url = new URL("https://mobileintelapi.com/api/v1/verify");
url.searchParams.set("number", "+14169670000"); // encodes the + as %2B

const res = await fetch(url, {
  headers: { "X-API-Key": "YOUR_API_KEY", "User-Agent": "my-app/1.0" },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const result = await res.json();
console.log(result.verdict, result.phone_type, result.carrier);
```

**4. Look up many numbers at once**

Send up to 10,000 numbers in one `POST`. Results come back in the same order.

```bash cURL theme={null}
curl -X POST "https://mobileintelapi.com/api/v1/verify" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "User-Agent: my-app/1.0" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+14169670000", "2122671234"]}'
```

```python Python theme={null}
import requests

numbers = ["+14169670000", "2122671234"]
r = requests.post(
    "https://mobileintelapi.com/api/v1/verify",
    json={"numbers": numbers},
    headers={"X-API-Key": "YOUR_API_KEY", "User-Agent": "my-app/1.0"},
    timeout=120,
)
r.raise_for_status()
for number, result in zip(numbers, r.json()["results"]):
    print(number, result["verdict"])
```

```javascript Node theme={null}
const numbers = ["+14169670000", "2122671234"];
const res = await fetch("https://mobileintelapi.com/api/v1/verify", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "User-Agent": "my-app/1.0",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ numbers }),
});
const { results } = await res.json();
numbers.forEach((n, i) => console.log(n, results[i].verdict));
```

> [!WARNING]
>
> **Always send a real `User-Agent` header.** Requests with a library's default user agent (for example Python's `urllib`) can be blocked with a `403` before they reach the API. Any descriptive value works, like `my-app/1.0`.

> [!WARNING]
>
> **Encode the `+`.** In a query string a bare `+` means a space. Use `%2B14169670000`, send 10 digits (`4169670000`), or let your HTTP library build the query string as in the Python and Node samples. The batch `POST` body has no such problem.


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