# GET /v1/connections/{connection_id}

> One connection's status.

In [Connected apps API](https://vestra.ai/developers/reference/api/connected-apps.md): The apps each user connects through a sign-in link, and the apps they may choose from.

Send `Authorization: Bearer vk_test_...` on every call.

One connection's status. user_id names whose it is.

Your API key, scope `runtime` or `all`. On the card: [`connect`](https://vestra.ai/developers/connect.md). Over HTTP it is made from the contract: fill in each {…} and every value.

## Request

Path:

- `connection_id` (`string`, required): The connected app's id (`con_...`).

Query:

- `user_id` (`string`): Whose Bash: your id for the user. Absent: your company's own Bash.

## Answers 200

- `object` (`"connection"`): Always `connection`.
- `id` (`string`): The connection's id. Example: `con_8f2k`.
- `user_id` (`string | null`): Your id for the user; null for your company's own Bash.
- `app` (`string`): The app, by its slug. Example: `gmail`.
- `status` (`"active" | "pending" | "initializing" | "expired" | "revoked" | "inactive" | "failed"`): `active`: Bash can use it. `pending` or `initializing`: the sign-in is not finished. `expired`, `revoked`, `inactive` or `failed`: it no longer works, and the user connects it again.
- `label` (`string | null`): The account's label, usually its email; null when the app gives none.
- `created_at` (`string`): When it was connected, as an ISO 8601 date and time in UTC.

## Code

**TypeScript**

```ts
const connection = await vestra.user('traveller-42').connect.get('con_7hs');
```

**Python**

```python
connection = vestra.user("traveller-42").connect.get("con_7hs")
```

**HTTP**

```bash
curl "$VESTRA_BASE_URL/v1/connections/{connection_id}" \
  -H "Authorization: Bearer $VESTRA_API_KEY"
```

**CLI, MCP**: No sample in your language for this route, so here it is over HTTP.
