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

# Create Fillout 3rd Party Apps

> Create direct integrations between Fillout and other tools or platforms. Add webhooks to listen for form responses, retrieve forms, etc.

## Overview

3rd party applications in Fillout can be used to create direct integrations with other tools or platforms and allow you or your users to access Fillout forms and responses. You can use a Fillout app to:

* Connect Fillout with external platforms or internal tools
* Retrieve forms and form responses
* Listen for new submissions using webhooks
* Build custom workflows and automations
* Create integrations for shared or public use

To connect Fillout to your app, you’ll first start by creating an OAuth application in Fillout. Requests for direct integrations, partnership integrations, or public OAuth apps may require review and approval from the Fillout team before they can be used by other users.

## Creating an OAuth app

<Steps>
  <Step title="Open settings">
    On the upper left corner of your Fillout dashboard, click your `Account name` followed by `Settings`.

    <img src="https://mintcdn.com/fillout-005a867b/Z6wbeVWdo4AnKRp0/images/Screenshot2025-09-23at2.36.57PM.png?fit=max&auto=format&n=Z6wbeVWdo4AnKRp0&q=85&s=c4146baa0e9a1424cbf8dbe0dc336b81" alt="Screenshot 2025-09-23 at 2.36.57 PM.png" title="Screenshot 2025-09-23 at 2.36.57 PM.png" style={{ width:"35%" }} width="492" height="879" data-path="images/Screenshot2025-09-23at2.36.57PM.png" />
  </Step>

  <Step title="Go to account settings">
    In the **Developer** page, select `OAuth integrations`.

    <img src="https://mintcdn.com/fillout-005a867b/flE1CJ88ThhIg1_d/images/Screenshot2025-11-06at3.53.23PMcopy.png?fit=max&auto=format&n=flE1CJ88ThhIg1_d&q=85&s=f6e4e0bd7092146e943efc5638a87751" alt="Screenshot 2025-11-06 at 3.53.23 PM copy.png" width="2651" height="731" data-path="images/Screenshot2025-11-06at3.53.23PMcopy.png" />
  </Step>

  <Step title="Create app">
    Click `Create app` and enter a **name** for your app.

    <img src="https://mintcdn.com/fillout-005a867b/flE1CJ88ThhIg1_d/images/Screenshot2025-11-06at3.55.29PM.png?fit=max&auto=format&n=flE1CJ88ThhIg1_d&q=85&s=d42471222b6e111f79bf977d70212cfe" alt="Screenshot 2025-11-06 at 3.55.29 PM.png" title="Screenshot 2025-11-06 at 3.55.29 PM.png" style={{ width:"84%" }} width="2041" height="802" data-path="images/Screenshot2025-11-06at3.55.29PM.png" />
  </Step>

  <Step title="Configure your app">
    You’ll want to upload an **App icon** (users will see this when they first connect), and also set up some basic properties:

    * **Redirect URIs** - endpoints you’d like to get sent to during the OAuth token exchange process to receive the token (more info below)
    * **Client ID** - the public ID of your application
    * **Client secret** - must be generated to get started.
          <Warning>
            Make sure to save this token, it will only be shown once.
          </Warning>

    <img src="https://mintcdn.com/fillout-005a867b/fWl8ignnhVHfY8tA/images/Screenshot2025-11-06at3.58.19PM.png?fit=max&auto=format&n=fWl8ignnhVHfY8tA&q=85&s=6c888f24006ea5384660372d67c026c2" alt="Screenshot 2025-11-06 at 3.58.19 PM.png" title="Screenshot 2025-11-06 at 3.58.19 PM.png" style={{ width:"72%" }} width="1058" height="1193" data-path="images/Screenshot2025-11-06at3.58.19PM.png" />
  </Step>
</Steps>

## OAuth process

### Authorization request

`GET https://build.fillout.com/authorize/oauth`

To initiate the OAuth process, you’ll start by sending users to the above endpoint, with the following query parameters:

* `client_id`: the client ID of your app, which you can find while configuring it (see above)
* `redirect_uri`: the URL you expect to be redirected to, once access is granted for the token
* `state:` any string you’d like to use to retain state when redirecting back to your app

After authorization, the user’s browser will be redirected back to the redirect URI passed. Successful requests will forward the following query parameters to that URI:

* `code`: a unique oauth authorization code you can use to exchange for an access token
* `state`: the state parameter you passed in initially

### Token creation request

`POST https://server.fillout.com/public/oauth/accessToken`

Call this endpoint once you’ve successfully been redirected to after the authorization request. Pass, in the body of the request:

* `code`: the code you received in the previous step
* `client_id`: your client id for your app
* `client_secret`: the client secret you generated for your app
* `redirect_uri`: the redirect uri you originally received to generate this code.

A successful response will look like:

```json theme={null}
{
	"access_token": "abcdefg",
	"base_url": "https://api.fillout.com",
}
```

The `access_token` will grant access to the [Fillout API](/fillout-rest-api)

The `base_url` is the base URL for the api. Usually, this will be `https://api.fillout.com`, but may vary if you are in different geo-locations, or are self-hosting.

### Invalidate access token

`DELETE https://server.fillout.com/public/oauth/invalidate`

To authenticate this request, pass the following headers:

```json theme={null}
{
	"Authentication": "Bearer <your-api-key>"
}
```
