# Squadcast Integration via LowCodeAPI

**Last Updated**: February 11, 2026

## Overview

Remote recording platform

The Squadcast API provides access to:

- **Customer Support** - Related functionality

## Base Endpoint

```
https://api.lowcodeapi.com/squadcast/
```

**Important**: Always include the provider name in the URL path after `api.lowcodeapi.com/`

## Authentication

LowCodeAPI handles authentication automatically. You only need to:

1. **Sign up** at [Squadcast](https://squadcast.fm)
2. **Get your credentials** from [credential page](https://app.squadcast.fm/account/developers)
3. **Connect your account** in LowCodeAPI dashboard
4. **Use your `api_token`** in all requests

The `api_token` is your LowCodeAPI authentication token. LowCodeAPI will automatically:
- Fetch your provider credentials (API keys, OAuth tokens, etc.)
- Apply them to each request
- Handle token refresh for OAuth providers

**Auth Type**: TOKEN

## URL Format (Important)

LowCodeAPI supports **two URL formats** for endpoints with path parameters. **Always try New Format first**, and only fall back to Old Format if it doesn't work.

### New Format (Priority) - Dynamic Path Parameters

- **Path parameters stay in the URL path** - Do NOT convert to query parameters
- **Provider name is always in the URL path** after `api.lowcodeapi.com/`
- Pattern: `https://api.lowcodeapi.com/{provider}/{path_with_params}?api_token={api_token}`

**Example**:
```bash
# New Format - Path parameter stays in the URL path
https://api.lowcodeapi.com/squadcast/resource/{RESOURCE_ID}?api_token=YOUR_API_TOKEN
```

### Old Format (Fallback) - Sanitized Path + Query Parameters

- **Path parameters become query parameters**
- **Provider name is always in the URL path**
- Pattern: `https://api.lowcodeapi.com/{provider}/{sanitized_path}?{path_params}&api_token={api_token}`

**Example**:
```bash
# Old Format - Path parameter becomes a query parameter
https://api.lowcodeapi.com/squadcast/resource/id?id=RESOURCE_ID&api_token=YOUR_API_TOKEN
```

### Decision Flow for AI Agents

1. Always use **New Format first** - Keep path parameters in the URL path
2. If you get a 404 or error, try **Old Format** with sanitized path
3. Log which format worked for future requests to this provider

## API Categories

- **Organization** - 3 endpoints
- **Sessions** - 8 endpoints
- **Shows** - 3 endpoints
- **Webhooks** - 5 endpoints

## Common Endpoints

### Category: Organization

#### Get Organization ID

**Method**: `GET` | **LowCodeAPI Path**: `/v2/organizations`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/organizations?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/organizations?api_token={api_token}
```

**Description**: Retrieve all sessions

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/organizations?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get Organization ID](https://developers.squadcast.fm/reference/get_v2-organizations)

---

#### Get Balance

**Method**: `GET` | **LowCodeAPI Path**: `/v2/organizations/balance`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/organizations/balance?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/organizations/balance?api_token={api_token}
```

**Description**: Retrieve all sessions

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/organizations/balance?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get Balance](https://developers.squadcast.fm/reference/get_v2-organizations-balance)

---

#### Get all Team Members

**Method**: `GET` | **LowCodeAPI Path**: `/v2/organizations/team`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/organizations/team?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/organizations/team?api_token={api_token}
```

**Description**: Retrieve all sessions

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/organizations/team?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get all Team Members](https://developers.squadcast.fm/reference/get_v2-organizations-team)

---

### Category: Sessions

#### Get all Sessions

**Method**: `GET` | **LowCodeAPI Path**: `/v2/sessions`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions?showid={showid}&api_token={api_token}
```

**Description**: Retrieve all sessions

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `showid` | string | No | Show ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/sessions?showid=VALUE&api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get all Sessions](https://developers.squadcast.fm/reference/get_v2-sessions)

---

#### Create new Session

**Method**: `POST` | **LowCodeAPI Path**: `/v2/sessions`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions?api_token={api_token}
```

**Description**: Add a session

**Request Body**:
```json
{
  "date": "<string>",
  "endTime": "<string>",
  "sessionTitle": "<string>",
  "startTime": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date` | string | Yes | A Date to Schedule your Session in YYYY-MM-DD format |
| `endTime` | string | Yes | A End Time for your Session in hh:mm A format |
| `favorite` | boolean | No | Add this Session to your favorites |
| `sessionTitle` | string | Yes | Title your Session |
| `showID` | boolean | No | Show ID |
| `stage` | string | No | Invite Email for on stage for your Session |
| `startTime` | string | Yes | A Start Time for your Session in hh:mm A format |
| `timeZone` | string | No | A specific timezone for your Session |
| `videoEnabled` | boolean | No | Enable Video Recording for your Session |
| `viewer` | string | No | Invite Email for backstage for your Session |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X POST "https://api.lowcodeapi.com/squadcast/v2/sessions?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Create new Session](https://developers.squadcast.fm/reference/post_v2-sessions)

---

#### Get a Session

**Method**: `GET` | **LowCodeAPI Path**: `/v2/sessions/{id}`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/{id}?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/id?id={id}&api_token={api_token}
```

**Description**: Retrieve one session

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/sessions/{id}?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get a Session](https://developers.squadcast.fm/reference/get_v2-sessions-id)

---

#### Update a Session

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/sessions/{id}`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/{id}?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/id?id={id}&api_token={api_token}
```

**Description**: Update a session

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Request Body**:
```json
{
  "date": "<string>",
  "endTime": "<string>",
  "sessionTitle": "<string>",
  "startTime": "<string>"
}
```

**Request Body Fields**:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date` | string | Yes | A Date to Schedule your Session in YYYY-MM-DD format |
| `endTime` | string | Yes | A End Time for your Session in hh:mm A format |
| `favorite` | boolean | No | Add this Session to your favorites |
| `sessionTitle` | string | Yes | Title your Session |
| `stage` | string | No | Invite Email for on stage for your Session |
| `startTime` | string | Yes | A Start Time for your Session in hh:mm A format |
| `timeZone` | string | No | A specific timezone for your Session |
| `viewer` | string | No | Invite Email for backstage for your Session |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/squadcast/v2/sessions/{id}?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Update a Session](https://developers.squadcast.fm/reference/put_v2-sessions-id)

---

#### Delete a Session

**Method**: `DELETE` | **LowCodeAPI Path**: `/v2/sessions/{id}`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/{id}?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/id?id={id}&api_token={api_token}
```

**Description**: Delete a session

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X DELETE "https://api.lowcodeapi.com/squadcast/v2/sessions/{id}?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Delete a Session](https://developers.squadcast.fm/reference/delete_v2-sessions-id)

---

#### Get All Recordings from Session

**Method**: `GET` | **LowCodeAPI Path**: `/v2/sessions/{id}/recordings`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/{id}/recordings?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/id/recordings?id={id}&api_token={api_token}
```

**Description**: Retrieve one session

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/sessions/{id}/recordings?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get All Recordings from Session](https://developers.squadcast.fm/reference/get_v2-sessions-id-recordings)

---

#### Get A Recording from Session

**Method**: `GET` | **LowCodeAPI Path**: `/v2/sessions/{id}/recordings/{recordingID}`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/{id}/recordings/{recordingID}?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/id/recordings/recordingid?id={id}&recordingID={recordingID}&api_token={api_token}
```

**Description**: Retrieve one session

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |
| `recordingID` | string | Yes | Recording ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/sessions/{id}/recordings/{recordingID}?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get A Recording from Session](https://developers.squadcast.fm/reference/get_v2-sessions-id-recordings-recordingid)

---

#### Get InviteLinks from Session

**Method**: `GET` | **LowCodeAPI Path**: `/v2/sessions/{id}/invitelink`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/{id}/invitelink?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/sessions/id/invitelink?id={id}&api_token={api_token}
```

**Description**: Retrieve one session

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/sessions/{id}/invitelink?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get InviteLinks from Session](https://developers.squadcast.fm/reference/get_v2-sessions-id-invitelink)

---

### Category: Shows

#### Get all Shows

**Method**: `GET` | **LowCodeAPI Path**: `/v2/shows`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/shows?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/shows?api_token={api_token}
```

**Description**: Retrieve all sessions

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/shows?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get all Shows](https://developers.squadcast.fm/reference/get_v2-shows)

---

#### Get a Show

**Method**: `GET` | **LowCodeAPI Path**: `/v2/shows/{id}`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/shows/{id}?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/shows/id?id={id}&api_token={api_token}
```

**Description**: Retrieve one session

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/shows/{id}?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get a Show](https://developers.squadcast.fm/reference/get_v2-shows-id)

---

#### Get Team

**Method**: `GET` | **LowCodeAPI Path**: `/v2/shows/{id}/team`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/shows/{id}/team?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/shows/id/team?id={id}&api_token={api_token}
```

**Description**: Update a session

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/shows/{id}/team?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get Team](https://developers.squadcast.fm/reference/get_v2-shows-id-team)

---

### Category: Webhooks

#### Get all Webhooks

**Method**: `GET` | **LowCodeAPI Path**: `/v2/webhooks`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/webhooks?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/webhooks?events={events}&url={url}&api_token={api_token}
```

**Description**: Retrieve all sessions

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `events` | string | Yes | Events |
| `url` | string | Yes | url |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/webhooks?events=VALUE&url=VALUE&api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get all Webhooks](https://developers.squadcast.fm/reference/get_v2-webhooks)

---

#### Create a Webhook

**Method**: `POST` | **LowCodeAPI Path**: `/v2/webhooks`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/webhooks?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/webhooks?api_token={api_token}
```

**Description**: Retrieve all sessions

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X POST "https://api.lowcodeapi.com/squadcast/v2/webhooks?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Create a Webhook](https://developers.squadcast.fm/reference/post_v2-webhooks)

---

#### Get specific Webhook

**Method**: `GET` | **LowCodeAPI Path**: `/v2/webhooks/{id}`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/webhooks/{id}?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/webhooks/id?id={id}&api_token={api_token}
```

**Description**: Retrieve all sessions

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X GET "https://api.lowcodeapi.com/squadcast/v2/webhooks/{id}?api_token=YOUR_API_TOKEN"
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Get specific Webhook](https://developers.squadcast.fm/reference/get_v2-webhooks-id)

---

#### Delete specific Webhook

**Method**: `DELETE` | **LowCodeAPI Path**: `/v2/webhooks/{id}`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/webhooks/{id}?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/webhooks/id?id={id}&api_token={api_token}
```

**Description**: Retrieve all sessions

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X DELETE "https://api.lowcodeapi.com/squadcast/v2/webhooks/{id}?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Delete specific Webhook](https://developers.squadcast.fm/reference/delete_v2-webhooks-id)

---

#### Update specific Webhook

**Method**: `PUT` | **LowCodeAPI Path**: `/v2/webhooks/{id}`

**New Format (Priority)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/webhooks/{id}?api_token=YOUR_API_TOKEN
```

**Old Format (Fallback)**:
```bash
https://api.lowcodeapi.com/squadcast/v2/webhooks/id?id={id}&api_token={api_token}
```

**Description**: Retrieve all sessions

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID |

**Example Request**:
```bash
# NEW FORMAT (PRIORITY) - Path parameters stay in URL
curl -X PUT "https://api.lowcodeapi.com/squadcast/v2/webhooks/{id}?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'
```

**Example Response**:
```json
{
  "data": {
    // Provider response here
  }
}
```

**Official Documentation**: [Update specific Webhook](https://developers.squadcast.fm/reference/put_v2-webhooks-id)

---

## API Definition Endpoints

You can retrieve the complete OpenAPI specification for this provider using these endpoints:

**New Format (OpenAPI spec with dynamic path parameters):**
```bash
curl -X GET "https://backend.lowcodeapi.com/squadcast/openapi"
```

**Old Format (API definition with sanitized paths):**
```bash
curl -X GET "https://backend.lowcodeapi.com/squadcast/definition"
```

## Response Format

All responses from LowCodeAPI are wrapped in a `data` key:

```json
{
  "data": {
    // Actual response from provider API
  }
}
```

The `data` key contains the raw response from the provider's API.

## Complete Endpoint Reference

For a complete list of all 19 endpoints, refer to:
- **Official Provider Documentation**: https://developers.squadcast.fm/reference

## Usage Examples

### Example 1: Basic API Request (New Format)

Making a simple request to Squadcast:

```bash
# Replace RESOURCE_ID with an actual resource ID from your Squadcast account
curl -X GET "https://api.lowcodeapi.com/squadcast/resource/{RESOURCE_ID}?api_token=YOUR_API_TOKEN"
```

### Example 2: Request with Query Parameters (New Format)

Request with specific parameters:

```bash
# Include query parameters for filtering
curl -X GET "https://api.lowcodeapi.com/squadcast/resources?filter=value&api_token=YOUR_API_TOKEN"
```

## Error Handling

Standard HTTP status codes apply. All responses are wrapped in a `data` key:
```json
{
  "data": {
    // Actual response from provider
  }
}
```