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

# API Reference

> Programmatically interact with OrbitForms to manage forms, submissions, scheduling, meetings, and more.

## Authentication

Include your API key in the `Authorization` header:

```
Authorization: Bearer YOUR_API_KEY
```

<Warning>
  Keep your API key secret. Do not expose it in client-side code or public repositories.
</Warning>

## Base URL

```
https://orbitforms.ai/api/v1
```

## Endpoints

### Forms

**List all forms**

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/forms" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Get form submissions**

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/forms/:formId/submissions" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Create form**

```bash theme={null}
curl -X POST "https://orbitforms.ai/api/v1/forms" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "My Form", "fields": [...]}'
```

**Delete submission**

```bash theme={null}
curl -X DELETE "https://orbitforms.ai/api/v1/submissions/:submissionId" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Contacts

**List contacts** (with optional filters)

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/contacts?form_id=abc123&limit=50" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Get contact**

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/contacts/:contactId" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Update contact**

```bash theme={null}
curl -X PATCH "https://orbitforms.ai/api/v1/contacts/:contactId" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"custom_fields": {"company": "Acme Inc"}}'
```

**Add tag to contact**

```bash theme={null}
curl -X POST "https://orbitforms.ai/api/v1/contacts/:contactId/tags" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tag_id": "tag_xyz"}'
```

**Remove tag from contact**

```bash theme={null}
curl -X DELETE "https://orbitforms.ai/api/v1/contacts/:contactId/tags/:tagId" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Contact Tags

**List contact tags**

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/contact-tags" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Create contact tag**

```bash theme={null}
curl -X POST "https://orbitforms.ai/api/v1/contact-tags" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "High Intent"}'
```

**Delete contact tag**

```bash theme={null}
curl -X DELETE "https://orbitforms.ai/api/v1/contact-tags/:tagId" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Scheduling Pages

**List scheduling pages**

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/scheduling-pages" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Get scheduling page**

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/scheduling-pages/:id" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Create scheduling page**

```bash theme={null}
curl -X POST "https://orbitforms.ai/api/v1/scheduling-pages" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "30-min Call", "duration": 30}'
```

**Delete scheduling page**

```bash theme={null}
curl -X DELETE "https://orbitforms.ai/api/v1/scheduling-pages/:id" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Meetings

**List meetings** (with optional filters, includes AI notes)

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/meetings?status=completed&limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Get meeting** (includes `ai_notes`, `recording`, `field_values`)

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/meetings/:id" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

Example response:

```json theme={null}
{
  "id": "meeting_abc123",
  "status": "completed",
  "scheduled_at": "2025-03-07T14:00:00Z",
  "ai_notes": {
    "summary": "Discussed pricing and implementation timeline...",
    "action_items": ["Send proposal by Friday", "Schedule follow-up"]
  },
  "recording": {
    "url": "https://...",
    "duration_seconds": 1800
  },
  "field_values": {
    "attendee_email": "client@example.com",
    "attendee_name": "Jane Doe"
  }
}
```

**Update meeting**

```bash theme={null}
curl -X PATCH "https://orbitforms.ai/api/v1/meetings/:id" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "cancelled"}'
```

**Delete meeting**

```bash theme={null}
curl -X DELETE "https://orbitforms.ai/api/v1/meetings/:id" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Availability Schedules

**List availability schedules**

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/availability-schedules" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Get availability schedule**

```bash theme={null}
curl -X GET "https://orbitforms.ai/api/v1/availability-schedules/:id" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Sequences

Sequences have a separate API reference. See [Sequences API](/developers/api/sequences) for full documentation.

## Rate Limits

| Plan       | Limit               |
| ---------- | ------------------- |
| Free       | 100 requests/hour   |
| Pro        | 1,000 requests/hour |
| Enterprise | Unlimited           |

Rate limit headers are included in responses. Exceeding the limit returns `429 Too Many Requests`.

## Iframe Tracking Integration

Send tracking parameters from your page into OrbitForms forms for attribution and analytics.

### How It Works

1. **Add query params to the form URL** — Include `comet_token`, `attribution_id`, or other supported fields in the form's embed URL or link
2. **Orbit captures them** — When a user submits, these values are stored with the submission
3. **Use in workflows** — Reference them in workflows, webhooks, or exports for attribution reporting

### Supported Tracking Fields

| Field            | Description                 |
| ---------------- | --------------------------- |
| `comet_token`    | Cometly attribution token   |
| `attribution_id` | Generic attribution ID      |
| `tracking_id`    | Campaign or source tracking |
| `visitor_id`     | Visitor identifier          |
| `session_id`     | Session identifier          |

Example (JavaScript):

```javascript theme={null}
// Add tracking params to form URL
const formUrl = 'https://orbitforms.ai/f/your-form-id';
const params = new URLSearchParams({
  comet_token: 'abc123',
  attribution_id: 'campaign_xyz',
  visitor_id: getVisitorId()
});
const trackedUrl = `${formUrl}?${params.toString()}`;
```

<Note>
  If you're an analytics or attribution provider and want to integrate with OrbitForms, contact support for partnership options.
</Note>

## Next Steps

<CardGroup cols={2}>
  <Card title="Webhooks" icon="webhook" href="/guides/webhooks">
    Receive real-time submission data
  </Card>

  <Card title="Integrations" icon="plug" href="/guides/integrations">
    Connect to CRMs and tools
  </Card>
</CardGroup>
