Predict.aiDocs
Inference

Concepts

Addressing styles, raw vs segment inference, sync vs async responses, and the audit trail.

Addressing: deployment, pipeline, or goal

Every inference ultimately runs against one concrete deployment — a specific training served live. What differs is how you name it:

  • Deployment URL (/deployments/{deployment_id}/…) — pinned to that exact version. A promotion mints a new deployment ID, so this URL goes stale by design. Use it for reproducibility and A/B tests.
  • Pipeline alias (/pipelines/{pipeline_id}/…) — resolved to the pipeline's current deployment on every request. Survives promotions.
  • Goal alias (/goals/{goal_id}/…) — resolved goal → current champion → current deployment. Survives champion swaps and promotions. If you track an outcome ("forecast daily sales"), this URL never changes no matter what Goals does under the hood.

The aliases delegate to the same handlers as the deployment routes, so the request and response contracts are identical. A freshly promoted pipeline resolves even while its deployment is still coming up — you may get a clear "not ready" error rather than a 404 during that window.

Raw /infer vs /infer-segment

/infer/infer-segment
InputA tensor you build yourselfNothing — the platform prepares it
Body{ "input": [[…]] }{} (options for foundation deployments)
Data sourceWhatever you sendThe deployment's live segment data
Use whenYou control preprocessing end to endAlmost always

/infer-segment fetches the segment's latest values, applies the same normalization and engineered features used during training, and maps outputs back to segment labels — so the forecast you get matches what the model was trained to produce. Raw /infer skips all of that and sends your tensor straight to the model. Segment-based inference has the details.

Synchronous 200 vs asynchronous 202

Most inferences return 200 with predictions in the response. Foundation deployments scale to zero when idle — if the model server was cold, waking it can take minutes, so segment inference returns 202 immediately instead of holding your request open:

{
  "async": true,
  "status": "pending",
  "inference_id": "b7e6…",
  "deployment_id": "c4a7…",
  "segment_id": "SEGMENT_ID",
  "message": "Inference started. The model server may be cold; this can take a few minutes."
}

Completion is signaled by the inference.completed event on the workspace's realtime channel; as a fallback, poll GET /v1/inference/{inference_id} with the returned inference_id.

Every inference is logged

Each request writes a full record: the request and response payloads, latency, the deployment and segment involved, and — for segment inference — a snapshot of the exact history window the model saw. That makes every forecast auditable after the fact. Browse the trail in History & usage.

Inference on Shared serving is metered in credits per request; Dedicated serving includes inference in its flat hosting fee. Failed inferences are refunded automatically. Rates live in Billing.

On this page