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

# Netlify Integration for AI Agents & Workflows

> Web hosting and automation platform for modern web projects

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/df8MOr-hXotYLTh5/logos/netlify.svg?fit=max&auto=format&n=df8MOr-hXotYLTh5&q=85&s=8706b5913b7d6559f45aab46cb7bc1be" alt="Netlify logo" width="72" height="72" data-path="logos/netlify.svg" />

## Overview

Add **Netlify** to any ModuleX agent or workflow. Web hosting and automation platform for modern web projects, interfacing with the Netlify REST API (`api.netlify.com/api/v1`).

<Info>
  **Categories**: Developer Tools & Infrastructure · Hosting · Ci Cd · **Auth**: OAuth2 · **Actions**: 4
</Info>

## Authentication

### OAuth2 Authentication

Connect using Netlify OAuth (recommended)

#### Required Credentials

| Field         | Description                     | Required | Format |
| ------------- | ------------------------------- | -------- | ------ |
| Client ID     | Netlify OAuth App Client ID     | Yes      | `-`    |
| Client Secret | Netlify OAuth App Client Secret | Yes      | `-`    |

#### OAuth Configuration

* **Authorization URL**: `https://app.netlify.com/authorize`
* **Token URL**: `https://api.netlify.com/oauth/token`

## Available Actions

<AccordionGroup>
  <Accordion title="get_site — Get a specified site by its ID">
    ### Parameters

    <ResponseField name="site_id" type="string" required>
      The Netlify site ID to retrieve information for
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "ssl_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Ssl Url"
        },
        "admin_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Admin Url"
        },
        "state": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "State"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created At"
        },
        "updated_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Updated At"
        },
        "default_domain": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Default Domain"
        },
        "custom_domain": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Custom Domain"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetSiteOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_files — Returns a list of all the files in the current deploy for a site">
    ### Parameters

    <ResponseField name="site_id" type="string" required>
      The Netlify site ID to list files for
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "files": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Files",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListFilesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="list_site_deploys — Returns a list of all deploys for a specific site">
    ### Parameters

    <ResponseField name="site_id" type="string" required>
      The Netlify site ID to list deploys for
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of deploys to return
    </ResponseField>

    <ResponseField name="max_pages" type="integer">
      Maximum number of pages to fetch (1-500) (Default: `50`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "deploys": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Deploys",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListSiteDeploysOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="rollback_deploy — Restores an old deploy and makes it the live version of the site">
    ### Parameters

    <ResponseField name="site_id" type="string" required>
      The Netlify site ID to rollback a deploy for
    </ResponseField>

    <ResponseField name="deploy_id" type="string" required>
      The deploy ID to restore
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "state": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "State"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Name"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "ssl_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Ssl Url"
        },
        "created_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Created At"
        },
        "updated_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Updated At"
        }
      },
      "required": [
        "success"
      ],
      "title": "RollbackDeployOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* Netlify API rate limit: 500 requests per minute per access token (as documented by Netlify).
* Non-2xx responses and timeouts are caught and returned as `success=False` + `error` rather than raising.
* Deploy operations (rollback) may take a few seconds to propagate.

## Related integrations

<CardGroup cols={3}>
  <Card title="Railway" href="/integrations/tools/railway" />

  <Card title="Algolia" href="/integrations/tools/algolia" />

  <Card title="Amazon Web Services" href="/integrations/tools/aws" />
</CardGroup>

## Links

* [Netlify](https://www.netlify.com)
