Problem with handling "explode": true array query parameters in OpenAI GPT Custom Actions (affects ClickUp API)

Hello Everyone,

I am encountering a critical issue while building Custom GPT Actions that integrate with the ClickUp API.


1. Situation

  • I am trying to configure an action that calls the ClickUp API endpoint:
GET https://api.clickup.com/api/v2/team/{team_id}/task
  • This endpoint supports advanced filtering, including by multiple assignee IDs, passed as repeated query parameters.

ClickUp expects this format:

GET /team/36242225/task?assignees=42540721&assignees=54088468

:white_check_mark: Each assignees parameter appears separately in the query string.

This is standard OpenAPI behavior with:

style: form
explode: true

2. Current OpenAPI Schema Setup

I defined the parameter in my Action schema as:

{
  "name": "assignees",
  "in": "query",
  "required": false,
  "style": "form",
  "explode": true,
  "schema": {
    "type": "array",
    "items": {
      "type": "integer"
    }
  },
  "description": "Filter by one or more assignee user IDs."
}

This is 100% compliant with the OpenAPI 3.1.0 specification.

:white_check_mark: According to the spec, this setup should serialize multiple assignees query params separately (e.g., assignees=1&assignees=2).

3. Behavior in OpenAI Custom GPT Actions

Unfortunately, when running the Action:

  • OpenAI’s environment does not handle explode: true correctly for array query parameters.
  • Instead of sending multiple separate assignees=...&assignees=... params, it incorrectly serializes the array into a single stringified format, or fails entirely.
  • As a result, the ClickUp API returns a 400 Bad Request:
{ "err": "assignees must be an array", "ECODE": "PUBAPITASK_017" }

Thus, the Action cannot successfully retrieve tasks filtered by assignee as needed.


4. How OpenAI’s Action Environment Currently Works

It appears that:

  • The Action framework serializes array query parameters incorrectly.
  • explode: true is ignored when building real outgoing API requests.
  • Arrays are either:
    • Passed incorrectly as JSON inside a single query parameter (which ClickUp does not accept), or
    • Flattened improperly.

This makes it impossible to work with APIs that use standard exploded array query parameters (like ClickUp, JIRA, Zendesk, and others).


5. What I need:

  • Fix the OpenAI Custom Actions environment to correctly support:
    • style: form
    • explode: true
    • type: array for query parameters.
  • Make sure multiple repeated parameters (param=value&param=value) are sent properly.

6. Why it matters:

Many large APIs, including ClickUp, JIRA, Zendesk, and others, require repeated parameters for filtering and bulk operations.

Without this fix, it is impossible to fully integrate GPTs with these real-world APIs using Custom Actions.


7. Optional: Example reference

OpenAPI official serialization rules for style: form, explode: true:

  • OpenAPI 3.1 Specification (Query Parameter Serialization)

Expected:

GET /team/36242225/task?assignees=123&assignees=456

but OpenAI GPT currently cannot produce that request.


Thank you very much for your help and attention!

This issue severely limits the real-world integration power of GPT Actions, and I would be happy to provide logs, examples, or help test any fixes.

1 Like