OpenAI has added a new role in the message input called "developer." This role replaces the existing "system" role and provides context to the thinking models. All thinking models after O1 support this new role.

Current payload:

{
    "model": "o4-mini",
    "messages": [
        { "role": "system", "content": "system prompt" },
        { "role": "user", "content": "user prompt" },
    ]
}

New payload:

{
    "model": "o4-mini",
    "messages": [
        { "role": "developer", "content": "system prompt" },
        { "role": "user", "content": "user prompt" },
    ]
}

This does not work for o1-mini. You will get an error trying to supply system or developer role.

{
    "error": {
        "message": "Unsupported value: 'messages[0].role' does not support 'system' with this model.",
        "type": "invalid_request_error",
        "param": "messages[0].role",
        "code": "unsupported_value"
    }
}

{
    "error": {
        "message": "Unsupported value: 'messages[0].role' does not support 'developer' with this model.",
        "type": "invalid_request_error",
        "param": "messages[0].role",
        "code": "unsupported_value"
    }
}