usestrix/strix · warning · SpecParseError
Postman collection {collection_uid} came back empty
Error message
Postman collection {collection_uid} came back empty What it means
SpecParseError raised by fetch_postman_collection when the fetched payload's 'collection' key is missing-but-defaulted and the payload itself is not a usable non-empty dict — i.e. the API answered 200 with a valid JSON object but no collection content. The code uses payload.get('collection', payload), so an empty envelope {} or {'collection': {}} both land here.
Source
Thrown at strix/utils/api_spec.py:289
raise SpecParseError(f"Unexpected Postman API response shape for {label}")
return payload
def fetch_postman_collection(collection_uid: str, api_key: str) -> dict[str, Any]:
"""Fetch a collection from the Postman API and return the raw collection dict.
Uses ``GET /collections/{uid}`` with the ``X-Api-Key`` header. The endpoint
wraps the collection under a ``collection`` key, unwrapped here so the result
matches an exported collection file.
"""
payload = _postman_api_json(
f"{POSTMAN_API_BASE}/collections/{collection_uid}",
api_key,
f"collection {collection_uid}",
)
collection = payload.get("collection", payload)
if not isinstance(collection, dict) or not collection:
raise SpecParseError(f"Postman collection {collection_uid} came back empty")
return collection
def fetch_postman_environment(environment_uid: str, api_key: str) -> dict[str, str]:
"""Fetch a Postman environment and return its enabled ``{key: value}`` pairs.
Disabled values are skipped, matching how Postman resolves an environment at
request time.
"""
payload = _postman_api_json(
f"{POSTMAN_API_BASE}/environments/{environment_uid}",
api_key,
f"environment {environment_uid}",
)
environment = payload.get("environment", payload)
values = environment.get("values") if isinstance(environment, dict) else None
if not isinstance(values, list):
return {}View on GitHub (pinned to 8551339130)
Solutions
- Open the collection in Postman and confirm it has at least one request and valid info
- If it was just created, wait for sync and retry the fetch
- Add content or pick the intended non-empty collection UID
Example fix
# before: scanning a placeholder collection strix --api-spec postman:uid-of-empty-collection # after: export a real collection with requests strix --api-spec postman:uid-of-real-collection
Defensive patterns
Strategy: fallback
Validate before calling
collection = payload.get("collection", payload)
if not isinstance(collection, dict) or not collection:
raise ValueError("empty collection — pick a collection that has requests") Type guard
def is_nonempty_collection(c) -> bool:
return isinstance(c, dict) and len(c) > 0 and ("item" in c or "info" in c) Try / catch
except SpecParseError as e:
if "came back empty" in str(e):
list collections, pick a populated one (or wait for sync on a just-created one), retry once Prevention
- Create collections with at least one request before scanning
- After creating/updating in the Postman UI, wait briefly before fetching via API
- Verify exports contain an 'item' array before using them
When it happens
Trigger: The API returning {'collection': {}} for an empty or corrupted collection; an empty newly-created collection with zero requests and no info; an integration that returns an empty shell object.
Common situations: Scanning a freshly created placeholder collection; Postman sync lag after creating a collection immediately before fetching; collections whose export was stripped.
Related errors
- Invalid API spec '{target}': {exc}
- Missing Postman collection id in '{target}' (expected postma
- POSTMAN_API_KEY is not set. Export a Postman API key (PMAK-…
- Failed to reach the Postman API: {exc}
- Postman API rejected the key (401). Check POSTMAN_API_KEY.
AI-assisted analysis of usestrix/strix@8551339130 (2026-08-15).
Data as JSON: /api/errors/77f6ef19bc40f86d.
Report an issue: GitHub.