# Gately API Documentation

The Gately API is a RESTful API that allows you to programmatically interact with your Gately project. Use it to manage users, forms, content, and more.

## Base URL

All API requests should be made to:

```
https://api.usegately.com/api/v1
```

The legacy `/sdk` path is still supported for backward compatibility but is deprecated. New integrations should use `/api/v1`.

## API Playground

**Try it live!** Each API endpoint page has an interactive playground. Enter your API key and test requests directly from the documentation.

To use the API playground:

1. Get your API key from **Dashboard → Settings → API Keys**
2. Click on any endpoint in the sidebar
3. Enter your API key in the Authorization field (format: `gately_sk_live_xxxxx`)
4. Fill in the parameters and click **Send**

Make sure you’re using a valid API key that starts with `gately_`. Project IDs won’t work - you need an actual API key from your dashboard.

## Available Endpoints

The Gately API provides endpoints for:

| Category | Description |
| --- | --- |
| **Authentication** | Login, signup, magic links, SSO |
| **Members** | CRUD operations for project members |
| **Forms** | Form management and submissions |
| **Analytics** | Page views, events, and statistics |
| **Plans** | Subscription plans and management |
| **Discussions** | Community discussions and comments |
| **Ecommerce** | Products, cart, and orders |
| **Help Center** | Knowledge base articles and search |
| **Feedback** | Customer feedback collection |
| **LMS** | Courses, enrollments, and progress |
| **Member Content** | Page protection rules |
| **Storage** | File uploads |
| **Webhooks** | Event notifications |

## Authentication

The API uses API key authentication. Your API key contains the project context, so no separate project ID is needed.

### API Key Authentication

Include your API key in the `Authorization` header:

```
curl -X GET "https://api.usegately.com/api/v1/members" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### JWT Authentication (Client-side)

For client-side requests from authenticated users, use the JWT token from a user session:

```
curl -X GET "https://api.usegately.com/api/v1/user/profile" \
  -H "Authorization: Bearer USER_JWT_TOKEN"
```

## Request Headers

All requests must include:

| Header | Description |
| --- | --- |
| `Authorization` | Bearer token (API key or JWT) |
| `Content-Type` | `application/json` for POST/PUT requests |

## Response Format

All responses are returned in JSON format:

```
{
  "success": true,
  "data": {
    // Response data
  }
}
```

### Error Responses

```
{
  "success": false,
  "error": "Error message",
  "code": "ERROR_CODE"
}
```

## HTTP Status Codes

| Code | Description |
| --- | --- |
| `200` | Success |
| `201` | Created |
| `400` | Bad Request - Invalid parameters |
| `401` | Unauthorized - Invalid or missing authentication |
| `403` | Forbidden - Insufficient permissions |
| `404` | Not Found - Resource doesn’t exist |
| `422` | Validation Error - Invalid input data |
| `429` | Rate Limited - Too many requests |
| `500` | Server Error - Something went wrong |

## Rate Limiting

API requests are rate limited to ensure fair usage:

- **Standard**: 100 requests per minute
- **Authentication endpoints**: 20 requests per minute

Rate limit headers are included in responses:

```
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1640000000
```

## Pagination

List endpoints support pagination:

```
GET /api/members?page=1&limit=20
```

Response includes pagination metadata:

```
{
  "data": [...],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 150,
    "total_pages": 8
  }
}
```

## Filtering & Sorting

Many endpoints support filtering and sorting:

```
# Filter by status
GET /api/members?status=active

# Sort by created date
GET /api/members?sort=created_at&order=desc

# Search
GET /api/members?search=john
```

## SDKs & Libraries

We provide official SDKs for common platforms:

[**JavaScript SDK** 
\
For browsers and Node.js](/content/docs/sdk/introduction/index.html)

[**React Hooks** 
\
React-specific hooks and components](/content/docs/sdk/introduction/index.html)

## Need Help?

[**API Keys** 
\
Learn how to create and manage API keys](/content/docs/api-reference/api-keys/index.html)

[**Webhooks** 
\
Set up real-time event notifications](/content/docs/api-reference/webhooks/overview.mdx)
