Trying to create a new contact list via /api/v2/outbound/contactlists. Getting a 400 with INVALID_VALUE on the name field. Tried alphanumeric and simple strings. Same error. Here’s the payload.
The endpoint you are hitting is for contact items, not the list itself. That’s why the name field is throwing an INVALID_VALUE error. The item resource expects contact details, not list metadata. You need to POST to /api/v2/outbound/contactlists to create the container.
Here is the correct payload structure for the list creation endpoint:
Once that succeeds, you get a contactListId. You then use that ID to add the contacts. The SDK handles this distinction pretty well if you look at the OutboundApi client in the PlatformClientV2 library. The postOutboundContactlist method is separate from postOutboundContactlistitem. Just make sure your token has outbound:contactlist:write scope, otherwise you’ll hit a 403 after fixing the path. Check the API docs for the specific field requirements on the list object.
is spot on. You’re hitting the items endpoint instead of the list creator. The POST /api/v2/outbound/contactlists route expects specific list metadata, not raw contact fields.
Switch to POST /api/v2/outbound/contactlists for the actual creation. Also, type: "EMAIL" isn’t a standard enum value for the list itself. The API usually defaults to OUTBOUND for dialer lists. If you strictly need an email-only list, you might need to check if your org has the specific engagement settings enabled, but generally, you just send the name.
Once that returns a 201, grab the id from the response. Then you can add the actual email addresses to the list using the appropriate contact creation methods. Don’t forget to check the status field on the list object after creation, sometimes it takes a second to initialize.
Switching to /api/v2/outbound/contactlists fixed it. The items endpoint was definitely the culprit, and dropping the type: "EMAIL" constraint let the API handle the defaults without complaining.
Payload is clean now. Just need to figure out the retry logic for the subsequent item uploads.