# Get All Forms (GET)

Retrieve every form in your account, newest first.

## Endpoint

```
GET https://api.pocketalert.app/v1/forms
```

## Authentication

> **Info: Required**
>
> Include one of these headers in your request:
> - `Token: <your-api-key>` — Get it from [API Keys](https://pocketalert.app/account/apikeys)
> - `Authorization: Bearer <jwt-token>` — From [Login](https://info.pocketalert.app/api/user/login.md)

## Request

### Headers

| Header | Required | Description |
|--------|:--------:|-------------|
| `Token` | ✅ | Your API key |
| `Authorization` | ✅ | `Bearer <jwt-token>` |

### Example Request

**cURL**

```bash
curl -X GET "https://api.pocketalert.app/v1/forms" \
  -H "Token: your-api-key"
```

**JavaScript**

```javascript
const response = await fetch('https://api.pocketalert.app/v1/forms', {
  headers: { 'Token': 'your-api-key' }
});

const forms = await response.json();
forms.forEach((form) => console.log(form.name, `https://frms.click/${form.tid}`));
```

**Python**

```python
import requests

response = requests.get(
    'https://api.pocketalert.app/v1/forms',
    headers={'Token': 'your-api-key'}
)

for form in response.json():
    print(form['name'], f"https://frms.click/{form['tid']}")
```

**PHP**

```php
$forms = Http::withHeaders([
    'Token' => 'your-api-key',
])->get('https://api.pocketalert.app/v1/forms')->json();

foreach ($forms as $form) {
    echo $form['name'].' https://frms.click/'.$form['tid'].PHP_EOL;
}
```

## Response

### Success Response

> **Tip: 200 OK**
>
> An array of forms. An account with no forms returns `[]`.

| Field | Type | Description |
|-------|------|-------------|
| `tid` | string | Form identifier — the public link is `https://frms.click/{tid}` |
| `name` | string | Internal name, shown in your dashboard |
| `fields` | array | The form's fields — see [Create Form](https://info.pocketalert.app/api/forms/create.md#fields) |
| `settings` | object | Title, texts and design — see [Create Form](https://info.pocketalert.app/api/forms/create.md#settings) |
| `application_tid` | string | Application the submissions belong to (empty if none) |
| `device_tid` | string | Target device TID, `all`, or empty for every device |
| `default_level` | int \| null | Priority level applied to submissions (`-2`..`2`) |
| `push_title` | string | Push title template (empty means `Form: {name}`) |
| `allowed_origins` | array | Hosts allowed to embed and submit the form (empty means anywhere) |
| `max_responses` | int | Response cap, `0` for unlimited |
| `closes_at` | string \| null | Closing time, RFC 3339 in UTC |
| `closed` | boolean | Whether the form currently refuses submissions |
| `is_active` | boolean | The owner's on/off switch |
| `submissions_count` | int | Responses received so far |
| `last_submission_at` | string | Last response, in your account timezone |
| `created_at` | string | Creation date, in your account timezone |

```json
[
  {
    "tid": "vml19aihrga216gt8apc5e3m9",
    "name": "Contact form",
    "fields": [
      { "id": "name", "type": "text", "label": "Name", "placeholder": "Jane Doe", "required": true },
      { "id": "email", "type": "email", "label": "Email", "placeholder": "jane@example.com", "required": true }
    ],
    "settings": {
      "title": "Get in touch",
      "top_text": "Leave your details and we will get back to you shortly.",
      "primary_color": "#3f5cad",
      "submit": { "text": "Submit", "color": "", "size": "md" }
    },
    "application_tid": "qm47b9pzxzx7applfd0",
    "device_tid": "",
    "default_level": null,
    "push_title": "New lead: {Name}",
    "allowed_origins": ["example.com"],
    "max_responses": 0,
    "closes_at": null,
    "closed": false,
    "is_active": true,
    "submissions_count": 12,
    "last_submission_at": "23.09.2026 14:05:11",
    "created_at": "20.09.2026 09:12:40"
  }
]
```

### Error Responses

| Status | Description |
|:------:|-------------|
| `401` | Unauthorized — Invalid or missing token |
| `500` | Failed to load forms |
