Outbound API POST /contacts/lists returns 400 INVALID_VALUE on valid JSON

Trying to spin up a new contact list via the Outbound API. We’ve got a simple script that pulls a CSV from S3, parses it into the required format, and POSTs it to /api/v2/outbound/contacts/lists.

The payload looks exactly right based on the docs. Here’s the JSON body we’re sending:

{
 "name": "Q3_Marketing_Test",
 "description": "Test list for API integration",
 "type": "csv",
 "file": {
 "name": "contacts.csv",
 "contentType": "text/csv",
 "data": "base64encodedcontenthere=="
 }
}

We get a 400 Bad Request back immediately. The error object in the response is pretty bare:

{
 "code": "INVALID_VALUE",
 "message": "Invalid value",
 "status": "Bad Request",
 "contextId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

I’ve verified the base64 string is valid. I can decode it locally and it matches the CSV file perfectly. Tried changing the contentType to application/octet-stream just in case. Same error.

Checked the contextId in the logs but nothing jumps out as a validation failure on the field level. It’s not complaining about the name being taken or anything specific. Just “Invalid value”.

Anyone hit this wall before? Is there a hidden requirement for the file object structure that the Swagger docs are glossing over? Maybe the base64 needs padding handled differently?

Running this from a Node.js script using the axios library. Standard bearer token auth. Everything else works fine with the same token.