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

# Introduction

> Learn about building apps and integrations on top of Landing's API.

## Welcome

Landing's API allows you to build powerful integrations using OAuth 2.0 for authentication and webhooks for real-time event notifications.

## Authentication

All API endpoints are authenticated using Bearer tokens and picked up from the specification file.

### OAuth 2.0 Integration

Landing supports OAuth 2.0 for secure third-party integrations, with optional PKCE (Proof Key for Code Exchange) support. The authentication process involves several steps:

1. [Create an OAuth Application](/api-reference/authentication#1-create-an-oauth-application)
2. [Redirect Users to Authorization](/api-reference/authentication#2-redirect-users-to-landings-authorization-page)
3. [Handle the Authorization Response](/api-reference/authentication#3-handle-the-authorization-response)
4. [Exchange Code for Access Token](/api-reference/authentication#4-exchange-code-for-access-token)
5. [Make API Requests](/api-reference/authentication#5-make-api-requests)
6. [Refresh Access Token](/api-reference/authentication#6-refresh-access-token)

See our [detailed OAuth 2.0 guide](/api-reference/authentication) for complete implementation instructions.

## Webhooks

Landing provides webhooks to notify your application about real-time events. Currently supported events:

* `lead.created` - Triggered when a new lead is created. Requires all available scopes (`project.read`, `pages.read`, `leads.read`, and `user.read`).

### Setting Up Webhooks

Once authenticated via OAuth 2.0, you can create webhooks to receive event notifications using our webhook endpoints:

* [Create a webhook](/api-reference/endpoint/create)
* [Delete a webhook](/api-reference/endpoint/delete)

Webhooks will send POST requests to your specified URL with event data in JSON format.

Example webhook payload for `lead.created`:

```json theme={null}
{
  "type": "email",
  "email": "john.doe@example.com"
}
```
