langgenius/dify · error · ValueError
Unsupported creator_ids type.
Error message
Unsupported creator_ids type.
What it means
Raised by the Pydantic field_validator on AppListBaseQuery.creator_ids (mode='before') when creator_ids is truthy but not a Python list. Mirror of the tag_ids type check. Surfaces as a Pydantic ValidationError on GET /console/apps and GET /console/apps/starred.
Source
Thrown at api/controllers/console/app/app.py:131
raise ValueError("Unsupported tag_ids type.")
items = [str(item).strip() for item in value if item and str(item).strip()]
if not items:
return None
try:
return [str(uuid.UUID(item)) for item in items]
except ValueError as exc:
raise ValueError("Invalid UUID format in tag_ids.") from exc
@field_validator("creator_ids", mode="before")
@classmethod
def validate_creator_ids(cls, value: list[str] | None) -> list[str] | None:
if not value:
return None
if not isinstance(value, list):
raise ValueError("Unsupported creator_ids type.")
items = [str(item).strip() for item in value if item and str(item).strip()]
if not items:
return None
try:
return [str(uuid.UUID(item)) for item in items]
except ValueError as exc:
raise ValueError("Invalid UUID format in creator_ids.") from exc
class RecentAppListQuery(BaseModel):
limit: int = Field(default=8, ge=1, le=8, description="Number of recently modified apps to return (1-8)")
class AppListQuery(AppListBaseQuery):
pass
View on GitHub (pinned to ef8544b173)
Solutions
- Send creator_ids as repeated query parameters: ?creator_ids=<uuid1>&creator_ids=<uuid2>.
- Configure the HTTP client's paramsSerializer to use repeated-key format.
- Omit the param when no creator filter is needed.
Example fix
// before
axios.get('/apps', { params: { creator_ids: creatorIds.join(',') } })
// after
axios.get('/apps', {
params: { creator_ids: creatorIds },
paramsSerializer: { indexes: null },
}) Defensive patterns
Strategy: type-guard
Validate before calling
function buildAppsParams(filters) {
const params = {};
if (Array.isArray(filters.creator_ids) && filters.creator_ids.length) params.creator_ids = filters.creator_ids;
return params;
} Type guard
const isStringArray = (v) => Array.isArray(v) && v.every((x) => typeof x === 'string');
Try / catch
try { await axios.get('/apps', { params, paramsSerializer: { indexes: null } }); }
catch (e) { if (/Unsupported creator_ids type/.test(e.message)) params.creator_ids = []; } Prevention
- Serialize creator_ids as repeated query keys.
- Validate the value is an array before sending.
- Use account UUIDs, never emails.
When it happens
Trigger: Sending creator_ids as a single scalar, a comma-joined string, or any non-array type in the query string. Triggered before UUID validation runs.
Common situations: Query serializer using 'comma' format instead of 'repeat'; passing account email or name string instead of an array of account IDs.
Related errors
- Unsupported tag_ids type.
- Invalid UUID format in tag_ids.
- Invalid UUID format in creator_ids.
- tracing_provider is required when enabled is True
- Unsupported query list type.
AI-assisted analysis of langgenius/dify@ef8544b173 (2026-08-12).
Data as JSON: /api/errors/0a9fab28194197de.
Report an issue: GitHub.