# Common API-Triggered Broadcast errors

This page lists some common errors you might encounter when you trigger a broadcast, and troubleshooting options to help you overcome these errors.

### Method Not Allowed[](#method-not-allowed)

You might have misspelled the request URI. The URI should look like the following (with the broadcast/trigger `:id`):

*   US region: `https://api.customer.io/v1/api/campaigns/:id/triggers`
*   EU region: `https://api-eu.customer.io/v1/api/campaigns/:id/triggers`

### “status”:“400”[](#status400)

```json
{
  "errors":[
    {
      "detail":"bad request (reference 01C4MWXZPAR1SHBSZT4ZMZ6KZV)",
      "status":"400"
    }
  ]
}
```

**Reason**: Issues with the JSON formatting of the request. This could be mismatched opening or closing brackets, missing commas or quotes, etc.

### “status”:“401”[](#status401)

You’ve provided an incorrect or invalid bearer token. Check that your token provides access to the workspace containing your broadcast and has sufficient permissions to trigger a broadcast.

```json
{
  "errors":[
    {
      "detail":"unauthorized",
      "status":"401"
    }
  ]
```

### “status”:“403”[](#status403)

The URL or the credentials in your `data_file_url` might be incorrect.

```json
{
    "errors": [
        "failed to download data file, server responded with code 403 Forbidden"
    ],
    "next": 0
}
```

### “status”:“404”[](#status404)

Your Broadcast’s trigger id doesn’t exist. You can double-check it by looking at your broadcast’s **Triggering Details** tab.

```json
{  
  "errors":[  
    {  
      "detail":"not found (reference 01C4MWKQA9XTFNYR68QB7JJ0XA)",
      "status":"404"
    }
  ]
}
```

### “status”:“422”[](#status422)

A `422` error means that your broadcast trigger failed a validation check. You can look use the trigger ID from the error detail to look up more information about the failure. Some common errors include:

*   Mistyped keys or values
*   One or more people in the payload don’t exist
*   Improper or missing request headers when sending a cURL request `(-H "Content-Type: application/json”)`
*   You used `ids`, `emails` or `recipients` alongside `per_user_data` or `data_file_url`. You can only use one of these in your request.
*   If you used `per_user_data` or `data_file_url`, email addresses in your request might resolve to more than one person.

```json
{
  "errors":[
    {
      "detail":"recipients filter is not valid",
      "source":{
        "pointer":"/data/attributes/recipients"
      },
      "status":"422"
    }
  ]
}
```

```json
{
    "errors": [
        {
            "detail": "exactly one of \"recipients\", \"ids\", \"emails\", \"per_user_data\", or \"data_file_url\" must be provided",
            "source": {
                "pointer": "/data/attributes/recipients"
            },
            "status": "422"
        }
    ]
}
```

#### Overriding missing or duplicate identifiers[](#overriding-missing-or-duplicate-identifiers)

While broadcasts fail by default when they encounter missing or duplicate IDs or emails, you can override this behavior by setting flags in your request payload:

*   `email_add_duplicates`: Set to `true` to allow broadcasts to send to people with duplicate emails.
*   `email_ignore_missing`: Set to `true` to skip over any people in your audience who don’t have emails, and continue sending to the rest of your audience.
*   `id_ignore_missing`: Set to `true` to skip over any people in your audience who don’t have IDs, and continue sending to the rest of your audience.

### Need help?[](#need-help)

If you’ve encountered a different error, or need more help fixing one the errors listed on this page, [let us know](https://customer.io/contact/)!