---
title: Deployments
description: Create, call, pause, and resume a model deployment in Pictograph. Per-deployment bearer-token auth, one /predict endpoint, billed by uptime. SDK and CLI.
section: API Reference
order: 19
---
A deployment turns a trained model into an always-on inference endpoint. You create it, get a `pk_deploy_` token and a `/predict` URL, and call that URL from REST, the SDK, or the CLI. It is billed by uptime, so you pause it when idle to stop the meter.

```python
from pictograph import Client

client = Client()

deployment = client.deployments.create(
    model_id="mdl_road_signs",
    gpu="t4",            # t4 / l4 / a10g / a100
    min_containers=1,    # keep one warm, or 0 to scale to zero
)
print(deployment.endpoint_url)
print(deployment.token)   # pk_deploy_... shown once, store it now
```

## How do I call the endpoint?

Each deployment exposes one `/predict` URL secured by its own bearer token. The token is shown once at create time and only its hash is stored.

```bash
curl https://your-deployment.pictograph.io/predict \
  -H "Authorization: Bearer pk_deploy_..." \
  -F "image=@frame.jpg"
```

```python
from pictograph import DeploymentClient

client = DeploymentClient(
    endpoint="https://your-deployment.pictograph.io",
    token="pk_deploy_...",
)
print(client.predict(image="./frame.jpg"))
```

```bash
pictograph deployments predict dep_abc123 --image ./frame.jpg
```

## How does billing work?

Deployments are metered by uptime in USD compute credits. The chosen GPU runs while the deployment is active, and you control cost three ways:

- **Pause and resume.** Pause to stop the meter, resume in seconds.
- **Scale to zero.** Set `min_containers=0` to bill only for active seconds during requests.
- **Auto-pause.** If your balance reaches zero, the deployment pauses automatically.

Every metering window is recorded for a full audit trail, and you see a transparent USD quote at create time.

## How is a deployment different from a workflow?

A deployment is an always-on endpoint you call yourself, ideal for low-latency, on-demand inference. A [workflow](/docs/api-reference/workflows.md) loads model weights directly per run, so batch and video jobs need no deployment. Use a deployment when you want a stable URL to integrate; use a workflow for pipelines over images, video, or datasets.

## Next steps

- [Deployments overview](/deployments)
- [Models API](/docs/api-reference/models.md)
- [Workflows API](/docs/api-reference/workflows.md)

_Last updated June 2026._