---
title: "List applications"
method: GET
path: "/applications"
tags: ["Applications"]
---

# List applications

`GET /applications`

## Request

- Base URL: `https://api.customdomain.ai/v1`
- URL: `https://api.customdomain.ai/v1/applications`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

With an API key: the caller's own tenant's apps. A **test mode** key lists only its own application, which is how a server learns which application a key belongs to. With the management key: `?tenant_id=` selects the tenant.

## Query parameters

- `tenant_id` string

## Response `200`

Applications

- object
  - `applications` Application[], required
    - `id` string, required
    - `tenant_id` string
    - `name` string, required
    - `environment` 'production' | 'staging' | 'development'
    - `default_origin` string
    - `connect_target` ConnectTarget
      - `cname_target` string, required
      - `apex_ipv4` string[]
    - `sandbox` boolean: `true` for a **test mode** application, made with `"sandbox": true` on `POST /applications`. It runs the whole connect flow end to end (the widget, the API, webhooks) against simulated DNS, on reserved `.test` names only, and never touches a real domain, the free domain, the quota or billing. Fixed when the application is created. Omitted (treated as `false`) on a live application.
    - `created_at` string, date-time
  - `count` integer, required

## Other responses

- `400`: Error envelope: {code, title, details}.
- `401`: Error envelope: {code, title, details}.

---

[API](https://skmtc.dev/customdomain/apis/customdomain-control-plane-api.md) · [All operations](https://skmtc.dev/customdomain/apis/customdomain-control-plane-api/llms.txt) · [OpenAPI document](https://skmtc.dev/customdomain/apis/customdomain-control-plane-api/revisions/34d89cb7a7cd?raw)
