400 INVALID_VALUE on POST /api/v2/outbound/contactlists with valid JSON schema

The dashboard ingestion layer needs to push fresh IVR call logs into Genesys via the outbound module, so we’re hitting POST /api/v2/outbound/contactlists from a Python script. The request body follows the standard schema with name, type, contactListType, and a contacts array containing id, phone, and firstName fields. Every run returns a 400 with errorCode: invalid_value and message: Invalid value for field contacts. The payload validates fine against the Swagger spec locally, and the auth token has outbound:contactlists:write scope. We’ve stripped the JSON down to a single record just to isolate the fault, but the gateway still rejects it.

Switching contactListType from UPLOAD to STATIC doesn’t change the response. The server clock on our Manila VM is synced to NTP, so timestamp drift isn’t causing validation mismatches. We’ve tried wrapping the phone numbers in E.164 format and dropping the id field entirely, yet the same invalid_value block keeps coming back. Headers are locked to application/json for both Accept and Content-Type. Logs just cut off there. No inner details from the serializer.

You’re likely hitting a schema validation error on the contacts array structure. The API expects specific field names and types, and it’s strict about them. Make sure your payload matches the ContactList definition exactly, particularly the type field which should be standard or campaign, and that each contact object has the required id (unique string) and phone fields. Here’s a minimal working example for the request body:

payload = {
 "name": "IVR_Call_Logs_2023",
 "type": "standard",
 "contactListType": "standard",
 "contacts": [
 {
 "id": "unique-id-001",
 "phone": "+15550199823",
 "firstName": "John",
 "lastName": "Doe"
 }
 ]
}

Double-check that id is unique across the list. If it’s not, you’ll get that 400 error. Also ensure the phone field includes the country code.