# Why your ElevenLabs Conversational AI calls show Spam Likely, and how to check

**If your ElevenLabs agent's outbound calls go unanswered or fail to start, the number they come from may be labeled or blocked by carriers.** ElevenLabs places calls through Twilio or your own SIP trunk, so reputation lives with that number. A check shows what AT&T, Verizon and T-Mobile display for it: the label, the caller name and a screenshot from a real phone, about 5 seconds after the call rings.

*Platform details checked October 2026. Spam I Am isn't affiliated with ElevenLabs.*

## What it looks like in ElevenLabs

ElevenLabs Agents (formerly Conversational AI) doesn't have a spam status. You'll see the problem in two places.

**Call initiation failure webhooks.** If you turn on post-call webhooks, ElevenLabs sends a `call_initiation_failure` event when a call can't start. Its `failure_reason` is `busy`, `no-answer` or `unknown`.

- On **Twilio**, a Twilio `failed` call is reported as `unknown`. The `metadata.body` holds Twilio's status callback, including `SipResponseCode`.
- On **SIP trunks**, `metadata.body` includes `sip_status_code`, `sip_status` and a readable `error_reason`.

A 603 there is worth noticing. Since March 25, 2026, US carriers must use **SIP 603+ ("Network Blocked")** for analytics-based blocking. [What 603+ and 608 mean](/guides/sip-603-plus-608-network-blocked)

**Call History.** Failed calls show a red error message on the Call History page.

**Labeled calls leave no error.** ElevenLabs only sends a failure webhook when the call can't start. A call that rings with "Spam Likely" and goes unanswered is a plain `no-answer`.

## Why ElevenLabs numbers get flagged

- **High volume from one number**, especially through batch calls.
- **Short calls and low answer rates.**
- **Dead air.** People hang up when they hear silence after "hello."
- **New or recycled numbers.**
- **Missing STIR/SHAKEN attestation, CNAM or analytics registration** on the Twilio or SIP account.
- **Unexpected calls** that people report or block.

[Why numbers get flagged](/guides/why-number-shows-spam-likely)

## Place the test call from ElevenLabs

The check call has to come **from the number being checked**. We never spoof numbers, so ElevenLabs places it through your Twilio or SIP number.

First, import the number in ElevenLabs. With Twilio, you can use a number bought in Twilio, or a **verified caller ID**. Verified caller IDs are outbound-only, which makes them handy for checking an existing business number.

Use a simple test agent with voicemail detection turned on, so it ends the call when it hears voicemail. Our phone rings for a few seconds, then sends the call to voicemail.

**Twilio numbers:**

```bash
curl -X POST https://api.elevenlabs.io/v1/convai/twilio/outbound-call \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "TEST_AGENT_ID",
    "agent_phone_number_id": "PHONE_NUMBER_ID",
    "to_number": "+14695550123"
  }'
```

**SIP trunk numbers:** send the same body to `https://api.elevenlabs.io/v1/convai/sip-trunk/outbound-call`.

`to_number` is the test line (`dial`). `agent_phone_number_id` is the ElevenLabs ID of the number you're checking.

## Run the check with Spam I Am

Start a check. The first one on any number is free and needs no key.

```bash
curl -X POST https://ismynumberspam.com/v1/checks \
  -H "Content-Type: application/json" \
  -d '{"number": "2145550100"}'
```

You get an `id`, a `token` and a `dial` number per carrier. Call them within 2 minutes for one carrier, plus 1 minute for each extra.

The full flow in Python:

```python
import os, time, requests

SIA = "https://ismynumberspam.com/v1"
NUMBER = "+12145550100"               # the number behind PHONE_NUMBER_ID
key = os.environ.get("SIA_API_KEY")   # optional for the first check
h = {"Authorization": f"Bearer {key}"} if key else {}
xi = {"xi-api-key": os.environ["ELEVENLABS_API_KEY"]}
OUTBOUND = "https://api.elevenlabs.io/v1/convai/twilio/outbound-call"  # or sip-trunk

check = requests.post(f"{SIA}/checks", json={"number": NUMBER}, headers=h).json()
q = {} if key else {"token": check["token"]}

def get_check():
    return requests.get(f"{SIA}/checks/{check['id']}", headers=h, params=q).json()

for line in check["calls"]:
    requests.post(OUTBOUND, headers=xi, json={
        "agent_id": os.environ["TEST_AGENT_ID"],
        "agent_phone_number_id": os.environ["PHONE_NUMBER_ID"],
        "to_number": line["dial"],
    })
    while True:  # wait for this carrier before dialing the next line
        c = next(x for x in get_check()["calls"] if x["carrier"] == line["carrier"])
        if c["status"] != "waiting":
            break
        time.sleep(5)

for c in get_check()["calls"]:
    print(c["carrier"], c["status"], c.get("label"), c.get("caller_name"), c.get("screenshot_url"))
```

These examples are a starting point. Check field names against ElevenLabs' current docs before you rely on them.

A `complete` carrier has `flagged`, `label`, `caller_name` and a screenshot. An `incomplete` carrier with `reason: "no_call"` didn't get the call in time. If ElevenLabs sent a `call_initiation_failure` for that call, check the SIP code: the carrier may have blocked it. Incomplete carriers are free.

You can also pass `webhook_url` when you start the check. We POST the finished check, signed with a `Spamiam-Signature` header.

### Use MCP

ElevenLabs agents can use tools from external MCP servers, over SSE or streamable HTTP. Go to **Integrations**, choose **Add Custom MCP Server**, enter `https://ismynumberspam.com/mcp`, and add an `Authorization: Bearer sia_...` header if you have a key. Then pick a tool approval mode. **Fine-Grained Tool Approval** lets read-only tools like `get_check` and `get_coverage` run automatically while you require approval for anything else.

For agent builders, connect our server to your coding agent and place calls through the ElevenLabs API:

```bash
claude mcp add --transport http spam-i-am https://ismynumberspam.com/mcp
```

The agent calls `start_check`, places one outbound call per `dial` number, then calls `get_check` with `wait_seconds` until the status is `complete`.

## Pre-campaign checklist

- **Check every number before** you assign it to an agent or a batch call.
- **Check before each batch.** All three carriers cost $0.40.
- **Re-check after volume spikes**, or when `no-answer` failures climb.
- **Turn on post-call webhooks** and log `call_initiation_failure` events by `from_number`, with the SIP code.
- **Check active numbers on a schedule.** Weekly is a good default.
- **One check per number per hour.**

## If it's flagged

Pause calls from that number. Then:

1. **Fix the cause.** Lower volume, call people who expect the call, and keep the agent's first response quick.
2. **Use your telephony provider's tools.** ElevenLabs' docs don't list a spam-remediation or branded-calling product of its own. On Twilio, Voice Integrity in Trust Hub submits your numbers to TNS (Verizon), First Orion (T-Mobile) and Hiya (AT&T) for review, and needs STIR/SHAKEN and CNAM set up first. Branded calling is available from Twilio and Telnyx at a per-call price.
3. **Register with the Free Caller Registry** at [freecallerregistry.com](https://freecallerregistry.com), which reaches Hiya, First Orion and TNS.
4. **Request a review** for each flagged carrier: [AT&T](/guides/remove-spam-label-att) · [Verizon](/guides/remove-spam-label-verizon) · [T-Mobile](/guides/remove-scam-likely-tmobile)
5. **Rest the number.** Cut or pause volume while the review runs. Swapping in fresh numbers to dodge a label usually gets the new ones flagged too.
6. **Consider a reputation-management provider** if you run many numbers. None can guarantee removal.

Re-check every few days. Reviews commonly take days to weeks. We only check. We don't remove labels.

## FAQ

### Does ElevenLabs tell me when a call is labeled as spam?
No. Labels don't produce errors. You only get a `call_initiation_failure` event when a call can't start.

### Can I check my existing business number?
Yes, if you can call from it. Add it to Twilio as a verified caller ID, import it into ElevenLabs, and use it for the test call.

### What if my business system shows a main company number instead?
Then the check will see the main number, not the one you meant. The call must present the number you're checking.

### Does one clean carrier mean I'm fine?
No. AT&T, Verizon and T-Mobile each decide separately.

### What does a check cost?
First check on a number: free. Then $0.25 for one carrier or $0.40 for two or three.

## Sources

- [ElevenLabs: Outbound call via Twilio](https://elevenlabs.io/docs/eleven-agents/api-reference/twilio/outbound-call)
- [ElevenLabs: Outbound call via SIP trunk](https://elevenlabs.io/docs/eleven-agents/api-reference/sip-trunk/outbound-call)
- [ElevenLabs: Twilio native integration](https://elevenlabs.io/docs/eleven-agents/phone-numbers/twilio-integration/native-integration)
- [ElevenLabs: Post-call webhooks](https://elevenlabs.io/docs/eleven-agents/workflows/post-call-webhooks)
- [ElevenLabs: Where can I locate the reason for my call failing?](https://elevenlabs.io/docs/help-center/product/eleven-agents/where-can-i-locate-the-reason-for-my-call-failing)
- [ElevenLabs: MCP tools](https://elevenlabs.io/docs/eleven-agents/customization/tools/mcp)
- [Twilio: Voice Integrity](https://www.twilio.com/docs/trust-hub/registrations/voice-integrity)
- [Spam I Am API docs](/docs) · [MCP server](/docs/mcp)
