INVALID_VALUE on POST /api/v2/outbound/contactlists despite valid JSON

Hey folks,

Trying to automate the creation of outbound contact lists via the API, but I’m hitting a wall with a 400 Bad Request and an INVALID_VALUE error. The docs say the payload should be straightforward, but I can’t figure out what’s tripping it up.

Here’s the endpoint I’m hitting:
POST /api/v2/outbound/contactlists

And the JSON payload I’m sending:

{
 "name": "Q4 Marketing Blast",
 "description": "Automated list creation test",
 "contactListType": "CSV",
 "fileSource": {
 "fileName": "contacts_q4.csv",
 "filePath": "s3://my-bucket/path/to/file.csv",
 "storageType": "S3"
 },
 "mapping": {
 "columns": [
 {
 "name": "phone_number",
 "type": "STRING"
 },
 {
 "name": "first_name",
 "type": "STRING"
 }
 ]
 }
}

The error response is pretty generic:

{
 "code": "INVALID_VALUE",
 "message": "Invalid value provided",
 "errors": []
}

I’ve verified the following:

  • The S3 path is correct and the file exists. The IAM role attached to the Genesys Cloud org has read access.
  • The CSV file has a header row matching the column names in the mapping object.
  • The contactListType is set to CSV as expected.
  • I’ve tried removing the description field, just in case it was choking on that.
  • The API token has the outbound:contactlist:create scope.

It feels like the fileSource structure might be off, but the schema in the Swagger UI looks exactly like what I’m sending. Has anyone run into this? Is there a specific format for the filePath when using S3 storage? Or maybe the mapping object needs a different structure?

Any pointers would be great. I’m about to start poking at the raw HTTP headers to see if there’s something weird going on there.