calesthio/OpenMontage · error · AtlasError
Atlas Cloud did not return a prediction id: {str(data)[:500]
Error message
Atlas Cloud did not return a prediction id: {str(data)[:500]} What it means
Raised by submit when the parsed Atlas envelope succeeds (HTTP ok, code 200 or absent) but the data object contains no id field. The prediction id is required to poll for the result, so the flow cannot continue. The truncated payload is included to show what the server actually returned.
Source
Thrown at tools/atlas_client.py:123
def submit(endpoint: str, payload: dict[str, Any], api_key: str, timeout: int = 60) -> str:
"""Submit a generation request and return its prediction id."""
import requests
try:
response = requests.post(
endpoint, headers=_headers(api_key), json=payload, timeout=timeout
)
except AtlasError:
raise
except Exception as exc: # noqa: BLE001
raise AtlasError(f"Could not reach Atlas Cloud at {endpoint}: {exc}") from exc
_raise_for_status(response, "Atlas Cloud submission")
data = _payload_of(response)
prediction_id = data.get("id")
if not prediction_id:
raise AtlasError(f"Atlas Cloud did not return a prediction id: {str(data)[:500]}")
return str(prediction_id)
def poll(
prediction_id: str,
api_key: str,
interval: float = 3.0,
timeout: float = 600.0,
request_timeout: int = 30,
) -> dict[str, Any]:
"""Poll a prediction until it terminates. Returns the final `data` object.
Raises AtlasError on reported failure or when `timeout` seconds elapse.
"""
import requests
url = f"{PREDICTION_ENDPOINT}/{prediction_id}"
elapsed = 0.0View on GitHub (pinned to 95e1c3d0ab)
Solutions
- Log the included payload snippet and check where the id lives (renamed or nested field)
- Confirm the endpoint argument matches the documented generation endpoint for the exact model
- If the model runs synchronously, use the direct response handling instead of submit+poll
- Update the client for the current API version if the field was renamed
Defensive patterns
Strategy: validation
Type guard
def submit_response_has_id(data: dict) -> bool:
return bool(data.get("id")) Prevention
- Use the exact documented endpoint string for the model you submit to
- Pin the client version matched to the Atlas API version you tested against
- Log the payload snippet when this fires to spot renamed id fields quickly
When it happens
Trigger: Submitting to an endpoint that returns a different shape (e.g. a synchronous result with outputs but no queued prediction); an endpoint URL typo landing on a non-generation route; Atlas contract drift renaming id to prediction_id or nesting it.
Common situations: Using a documentation example endpoint string that differs from the real generate endpoint; copy-pasting between image and video API versions with different envelopes; model routes that execute synchronously and skip the queue.
Related errors
- Atlas Cloud returned an unexpected payload: {str(body)[:500]
- Atlas Cloud returned an unexpected 'data' field: {str(data)[
- Atlas Cloud upload returned no URL: {str(data)[:500]}
- Prediction {prediction_id} reported '{last_status}' but retu
- Cannot upload — file not found: {path}
AI-assisted analysis of calesthio/OpenMontage@95e1c3d0ab (2026-08-15).
Data as JSON: /api/errors/4fae25381669e195.
Report an issue: GitHub.