> ## Documentation Index
> Fetch the complete documentation index at: https://docs.impulselabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Train a model in the dashboard and get your first inference in under 5 minutes

## Step 1 — Train a model

1. Go to [app.impulselabs.ai](https://app.impulselabs.ai) and sign in.
2. Upload a CSV dataset under **Datasets**.
3. Click **Train Model**, pick your target column, and start training.
4. Once training finishes, note the **Deployment ID** shown on the model card — you'll need it when calling `/infer`.

<Note>
  Deployment IDs look like `clf-titanic-survived` or a UUID. You can find them on the **Models** page in the dashboard.
</Note>

## Step 2 — Create an API key

1. In the dashboard, go to **Settings → API Keys**.
2. Click **New API Key**, give it a name (e.g. `my-app`), and click **Create**.
3. Copy the key immediately — it starts with `imp_` and is shown **only once**.

<Warning>
  Store your API key securely (e.g. in an environment variable). It cannot be retrieved after creation.
</Warning>

```bash theme={null}
export IMPULSE_API_KEY="imp_your_key_here"
export DEPLOYMENT_ID="your-deployment-id"
```

## Step 3 — Check deployment status

Before calling `/infer`, confirm the model is `ACTIVE`:

```bash theme={null}
curl -s "https://inference.impulselabs.ai/deploy/status?deployment_id=$DEPLOYMENT_ID" \
  -H "Authorization: Bearer $IMPULSE_API_KEY" | jq .status
```

Expected response:

```json theme={null}
{
  "deployment_id": "your-deployment-id",
  "status": "ACTIVE"
}
```

<Tip>
  If status is `CREATED` or `BUILDING`, wait a few seconds and retry — the model container is warming up.
</Tip>

## Step 4 — Run your first inference

Replace the `inputs` fields with your actual feature column names and values:

```bash theme={null}
curl -s -X POST "https://inference.impulselabs.ai/infer" \
  -H "Authorization: Bearer $IMPULSE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "deployment_id": "'$DEPLOYMENT_ID'",
    "inputs": {
      "Pclass": 3,
      "Sex": "male",
      "Age": 22,
      "SibSp": 1,
      "Parch": 0,
      "Fare": 7.25,
      "Embarked": "S"
    }
  }'
```

Response:

```json theme={null}
{
  "prediction": 0,
  "probability": 0.142,
  "target": "Survived"
}
```

## Next steps

<CardGroup cols={2}>
  <Card title="Use with Codex" icon="terminal" href="/codex">
    Train, inspect, and deploy models from Codex
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    Manage multiple API keys
  </Card>

  <Card title="Rate limits" icon="gauge" href="/api-reference/rate-limits">
    Understand limits and headers
  </Card>

  <Card title="Error reference" icon="circle-exclamation" href="/api-reference/errors">
    Handle errors gracefully
  </Card>

  <Card title="Inference API" icon="bolt" href="/api-reference/inference/run">
    Full parameter reference
  </Card>
</CardGroup>
