Development — entry 061 of 100
Netlify
The Netlify API manages sites, deploys, builds, DNS, and forms through a single REST host (`api.netlify.com`) using OAuth2 or personal access tokens, with a full OpenAPI/Swagger reference published alongside the guides. Netlify moved to credit-based pricing in September 2025: a free tier covers 300 monthly credits, with paid Personal, Pro, and Enterprise plans scaling credits and features above that.
GreatAPIs Score
Auth quickstart
- Register an app / run the OAuth flow to obtain a bearer token.
- Send it as an Authorization header
Authorization: Bearer <token>
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Endpoints
ticket2
POST/oauth/tickets
| Name | In | Required | Type |
|---|---|---|---|
client_id | query | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
401 | OAuth application not found | — |
422 | Validation error | — |
default | error | — |
GET/oauth/tickets/{ticket_id}
| Name | In | Required | Type |
|---|---|---|---|
ticket_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | ok | — |
default | error | — |
accessToken1
POST/oauth/tickets/{ticket_id}/exchange
| Name | In | Required | Type |
|---|---|---|---|
ticket_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
201 | ok | — |
default | error | — |
user1
GET/user
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
accountMembership5
GET/accounts
| Name | In | Required | Type |
|---|---|---|---|
minimal | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/accounts
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/accounts/{account_id}
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/accounts/{account_id}
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/accounts/{account_id}
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Not Content | — |
default | error | — |
member5
GET/{account_slug}/members
| Name | In | Required | Type |
|---|---|---|---|
account_slug | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/{account_slug}/members
| Name | In | Required | Type |
|---|---|---|---|
account_slug | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
GET/{account_slug}/members/{member_id}
| Name | In | Required | Type |
|---|---|---|---|
account_slug | path | yes | string |
member_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/{account_slug}/members/{member_id}
| Name | In | Required | Type |
|---|---|---|---|
account_slug | path | yes | string |
member_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/{account_slug}/members/{member_id}
| Name | In | Required | Type |
|---|---|---|---|
account_slug | path | yes | string |
member_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Not Content | — |
default | error | — |
accountType1
GET/accounts/types
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
paymentMethod1
GET/billing/payment_methods
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
auditLog1
GET/accounts/{account_id}/audit
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
query | query | no | string |
log_type | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
site10
GET/sites
| Name | In | Required | Type |
|---|---|---|---|
name | query | no | string |
filter | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites
| Name | In | Required | Type |
|---|---|---|---|
configure_dns | query | no | boolean |
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/sites/{site_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
feature_flags | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PATCH/sites/{site_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/sites/{site_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Deleted | — |
default | error | — |
PUT/sites/{site_id}/disable
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
reason | query | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
PUT/sites/{site_id}/enable
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
422 | Cannot enable this site | — |
default | error | — |
PUT/sites/{site_id}/unlink_repo
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
404 | Site not found | — |
GET/{account_slug}/sites
| Name | In | Required | Type |
|---|---|---|---|
name | query | no | string |
account_slug | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/{account_slug}/sites
| Name | In | Required | Type |
|---|---|---|---|
configure_dns | query | no | boolean |
account_slug | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
environmentVariables8
GET/accounts/{account_id}/env
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
context_name | query | no | string |
scope | query | no | string |
site_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/accounts/{account_id}/env
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
site_id | query | no | string |
application/json
| Status | Description | Schema |
|---|---|---|
201 | OK | — |
default | error | — |
GET/accounts/{account_id}/env/{key}
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
key | path | yes | string |
site_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/accounts/{account_id}/env/{key}
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
key | path | yes | string |
site_id | query | no | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PATCH/accounts/{account_id}/env/{key}
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
key | path | yes | string |
site_id | query | no | string |
application/json
| Status | Description | Schema |
|---|---|---|
201 | Created (success) | — |
default | error | — |
DELETE/accounts/{account_id}/env/{key}
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
key | path | yes | string |
site_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
204 | No Content (success) | — |
default | error | — |
DELETE/accounts/{account_id}/env/{key}/value/{id}
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
id | path | yes | string |
key | path | yes | string |
site_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
204 | No Content (success) | — |
default | error | — |
GET/api/v1/sites/{site_id}/env
| Name | In | Required | Type |
|---|---|---|---|
context_name | query | no | string |
scope | query | no | string |
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
file3
PUT/deploys/{deploy_id}/files/{path}
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
path | path | yes | string |
size | query | no | integer |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
GET/sites/{site_id}/files
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
GET/sites/{site_id}/files/{file_path}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
file_path | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
metadata2
GET/sites/{site_id}/metadata
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/sites/{site_id}/metadata
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
snippet5
GET/sites/{site_id}/snippets
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/snippets
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | OK | — |
default | error | — |
GET/sites/{site_id}/snippets/{snippet_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
snippet_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/sites/{site_id}/snippets/{snippet_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
snippet_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
DELETE/sites/{site_id}/snippets/{snippet_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
snippet_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
purge1
POST/purge
application/json (required)
| Status | Description | Schema |
|---|---|---|
202 | OK | — |
400 | Invalid request parameters | — |
404 | Site not found | — |
dnsZone11
GET/dns_zones
| Name | In | Required | Type |
|---|---|---|---|
account_slug | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | get all DNS zones the user has access to | — |
default | error | — |
POST/dns_zones
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/dns_zones/{zone_id}
| Name | In | Required | Type |
|---|---|---|---|
zone_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | get a single DNS zone | — |
default | error | — |
DELETE/dns_zones/{zone_id}
| Name | In | Required | Type |
|---|---|---|---|
zone_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | delete a single DNS zone | — |
default | error | — |
GET/dns_zones/{zone_id}/dns_records
| Name | In | Required | Type |
|---|---|---|---|
zone_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | get all DNS records for a single DNS zone | — |
default | error | — |
POST/dns_zones/{zone_id}/dns_records
| Name | In | Required | Type |
|---|---|---|---|
zone_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/dns_zones/{zone_id}/dns_records/{dns_record_id}
| Name | In | Required | Type |
|---|---|---|---|
zone_id | path | yes | string |
dns_record_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | get a single DNS record | — |
default | error | — |
DELETE/dns_zones/{zone_id}/dns_records/{dns_record_id}
| Name | In | Required | Type |
|---|---|---|---|
zone_id | path | yes | string |
dns_record_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | record deleted | — |
default | error | — |
PUT/dns_zones/{zone_id}/transfer
| Name | In | Required | Type |
|---|---|---|---|
zone_id | path | yes | string |
account_id | query | yes | string |
transfer_account_id | query | yes | string |
transfer_user_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | transfer a DNS zone to another account | — |
default | error | — |
GET/sites/{site_id}/dns
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/sites/{site_id}/dns
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
sniCertificate3
GET/sites/{site_id}/ssl
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/ssl
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
certificate | query | no | string |
key | query | no | string |
ca_certificates | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
422 | Unprocessable Entity. Returns errors such as: "certificate parameter is required when updating an existing certificate" (when updating without params), "No custom domain configured", or "bad dns for custom domain" | — |
default | error | — |
GET/sites/{site_id}/ssl/certificates
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
domain | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Array of SNI Certificates | — |
404 | Not Found | — |
422 | Unprocessable Entity | — |
deploy13
GET/deploys/{deploy_id}
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/deploys/{deploy_id}
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
POST/deploys/{deploy_id}/cancel
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
201 | Cancelled | — |
default | error | — |
POST/deploys/{deploy_id}/lock
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/deploys/{deploy_id}/unlock
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PATCH/deploys/{deploy_id}/validations_report
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
GET/sites/{site_id}/deploys
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
deploy-previews | query | no | boolean |
production | query | no | boolean |
state | query | no | string |
branch | query | no | string |
latest-published | query | no | boolean |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/deploys
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
deploy-previews | query | no | boolean |
production | query | no | boolean |
state | query | no | string |
branch | query | no | string |
latest-published | query | no | boolean |
title | query | no | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
GET/sites/{site_id}/deploys/{deploy_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
deploy_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/sites/{site_id}/deploys/{deploy_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
deploy_id | path | yes | string |
commit_ref | query | no | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/sites/{site_id}/deploys/{deploy_id}
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
POST/sites/{site_id}/deploys/{deploy_id}/restore
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
deploy_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
PUT/sites/{site_id}/rollback
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
deployedBranch1
GET/sites/{site_id}/deployed-branches
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
deployKey4
GET/deploy_keys
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/deploy_keys
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/deploy_keys/{key_id}
| Name | In | Required | Type |
|---|---|---|---|
key_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/deploy_keys/{key_id}
| Name | In | Required | Type |
|---|---|---|---|
key_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Not Content | — |
default | error | — |
build5
GET/builds/{build_id}
| Name | In | Required | Type |
|---|---|---|---|
build_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/builds/{build_id}/start
| Name | In | Required | Type |
|---|---|---|---|
build_id | path | yes | string |
buildbot_version | query | no | string |
build_version | query | no | string |
task_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
GET/sites/{site_id}/builds
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/builds
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
branch | query | no | string |
clear_cache | query | no | boolean |
image | query | no | string |
template_id | query | no | string |
title | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
422 | Unprocessable Entity | — |
default | error | — |
GET/{account_id}/builds/status
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
buildLogMsg1
POST/builds/{build_id}/log
| Name | In | Required | Type |
|---|---|---|---|
build_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
hook6
GET/hooks
| Name | In | Required | Type |
|---|---|---|---|
site_id | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/hooks
| Name | In | Required | Type |
|---|---|---|---|
site_id | query | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | OK | — |
default | error | — |
GET/hooks/{hook_id}
| Name | In | Required | Type |
|---|---|---|---|
hook_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/hooks/{hook_id}
| Name | In | Required | Type |
|---|---|---|---|
hook_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/hooks/{hook_id}
| Name | In | Required | Type |
|---|---|---|---|
hook_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
POST/hooks/{hook_id}/enable
| Name | In | Required | Type |
|---|---|---|---|
hook_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
hookType1
GET/hooks/types
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
buildHook5
GET/sites/{site_id}/build_hooks
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/build_hooks
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/sites/{site_id}/build_hooks/{id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/sites/{site_id}/build_hooks/{id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
DELETE/sites/{site_id}/build_hooks/{id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
service3
GET/services/
| Name | In | Required | Type |
|---|---|---|---|
search | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | services | — |
default | error | — |
GET/services/{addonName}
| Name | In | Required | Type |
|---|---|---|---|
addonName | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | services | — |
default | error | — |
GET/services/{addonName}/manifest
| Name | In | Required | Type |
|---|---|---|---|
addonName | path | yes | string |
| Status | Description | Schema |
|---|---|---|
201 | retrieving from provider | — |
default | error | — |
serviceInstance5
GET/sites/{site_id}/service-instances
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/services/{addon}/instances
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
addon | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/sites/{site_id}/services/{addon}/instances/{instance_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
addon | path | yes | string |
instance_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/sites/{site_id}/services/{addon}/instances/{instance_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
addon | path | yes | string |
instance_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
204 | No Content | — |
default | error | — |
DELETE/sites/{site_id}/services/{addon}/instances/{instance_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
addon | path | yes | string |
instance_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Deleted | — |
default | error | — |
function2
PUT/deploys/{deploy_id}/functions/{name}
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
name | path | yes | string |
runtime | query | no | string |
invocation_mode | query | no | string |
timeout | query | no | integer |
size | query | no | integer |
X-Nf-Retry-Count | header | no | integer |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
GET/sites/{site_id}/functions
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
filter | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
form2
GET/sites/{site_id}/forms
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/sites/{site_id}/forms/{form_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
form_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Deleted | — |
default | error | — |
submission4
GET/forms/{form_id}/submissions
| Name | In | Required | Type |
|---|---|---|---|
form_id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
GET/sites/{site_id}/submissions
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
GET/submissions/{submission_id}
| Name | In | Required | Type |
|---|---|---|---|
submission_id | path | yes | string |
query | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/submissions/{submission_id}
| Name | In | Required | Type |
|---|---|---|---|
submission_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Deleted | — |
default | error | — |
splitTest6
GET/sites/{site_id}/traffic_splits
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | split_tests | — |
default | error | — |
POST/sites/{site_id}/traffic_splits
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/sites/{site_id}/traffic_splits/{split_test_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
split_test_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | split_test | — |
default | error | — |
PUT/sites/{site_id}/traffic_splits/{split_test_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
split_test_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
POST/sites/{site_id}/traffic_splits/{split_test_id}/publish
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
split_test_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | enable | — |
default | error | — |
POST/sites/{site_id}/traffic_splits/{split_test_id}/unpublish
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
split_test_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | disabled | — |
default | error | — |
asset5
GET/sites/{site_id}/assets
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/assets
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
name | query | yes | string |
size | query | yes | integer |
content_type | query | yes | string |
visibility | query | no | string |
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/sites/{site_id}/assets/{asset_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
asset_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/sites/{site_id}/assets/{asset_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
asset_id | path | yes | string |
state | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | Updated | — |
default | error | — |
DELETE/sites/{site_id}/assets/{asset_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
asset_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Deleted | — |
default | error | — |
assetPublicSignature1
GET/sites/{site_id}/assets/{asset_id}/public_signature
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
asset_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
devServer6
GET/sites/{site_id}/dev_servers
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/dev_servers
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
branch | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/sites/{site_id}/dev_servers
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
branch | query | no | string |
| Status | Description | Schema |
|---|---|---|
202 | OK | — |
default | error | — |
GET/sites/{site_id}/dev_servers/{dev_server_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
dev_server_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
POST/sites/{site_id}/dev_servers/{dev_server_id}/activity
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
dev_server_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
POST/sites/{site_id}/dev_servers/{dev_server_id}/state
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
dev_server_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
409 | Conflict | — |
devServerHook5
GET/sites/{site_id}/dev_server_hooks
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/dev_server_hooks
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/sites/{site_id}/dev_server_hooks/{id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/sites/{site_id}/dev_server_hooks/{id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
DELETE/sites/{site_id}/dev_server_hooks/{id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
database19
GET/sites/{site_id}/database
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
role | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/database
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | Database already exists | — |
201 | Created | — |
default | error | — |
DELETE/sites/{site_id}/database
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Deleted | — |
default | error | — |
POST/sites/{site_id}/database/branch
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | Branch already exists | — |
201 | Created | — |
default | error | — |
GET/sites/{site_id}/database/branch/{branch_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
branch_id | path | yes | string |
role | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
404 | Branch not found | — |
default | error | — |
DELETE/sites/{site_id}/database/branch/{branch_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
branch_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Deleted | — |
default | error | — |
PUT/sites/{site_id}/database/branch/{branch_id}/compute/settings
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
branch_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
403 | Compute customization requires a Pro or higher plan | — |
default | error | — |
POST/sites/{site_id}/database/branch/{branch_id}/reset
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
branch_id | path | yes | string |
force | query | no | boolean |
role | query | no | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Invalid request — for example, the target is the production branch or the source branch is the same as the target. | — |
404 | Database or branch not found | — |
default | error | — |
GET/sites/{site_id}/database/branches
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
GET/sites/{site_id}/database/compute/settings
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
403 | Compute customization requires a Pro or higher plan | — |
default | error | — |
PUT/sites/{site_id}/database/compute/settings
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
403 | Compute customization requires a Pro or higher plan | — |
default | error | — |
DELETE/sites/{site_id}/database/compute/settings
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Cleared | — |
403 | Compute customization requires a Pro or higher plan | — |
default | error | — |
GET/sites/{site_id}/database/migrations
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
branch | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
404 | Database or branch not found | — |
423 | Database is disabled | — |
default | error | — |
POST/sites/{site_id}/database/migrations/{deploy_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
deploy_id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
409 | Migration conflict - migration modified or removed after being applied | — |
422 | Migration validation failed | — |
default | error | — |
GET/sites/{site_id}/database/migrations/{name}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
name | path | yes | string |
branch | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
404 | Migration, database, or branch not found | — |
423 | Database is disabled | — |
default | error | — |
POST/sites/{site_id}/database/snapshot
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
DELETE/sites/{site_id}/database/snapshot/{snapshot_id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
snapshot_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Deleted | — |
default | error | — |
POST/sites/{site_id}/database/snapshot/{snapshot_id}/restore
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
snapshot_id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
GET/sites/{site_id}/database/snapshots
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
agentRunner9
GET/agent_runners
| Name | In | Required | Type |
|---|---|---|---|
account_id | query | yes | string |
site_id | query | yes | string |
page | query | no | integer |
per_page | query | no | integer |
state | query | no | string |
title | query | no | string |
branch | query | no | string |
result_branch | query | no | string |
from | query | no | integer |
to | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/agent_runners
| Name | In | Required | Type |
|---|---|---|---|
site_id | query | yes | string |
deploy_id | query | no | string |
branch | query | no | string |
prompt | query | no | string |
agent | query | no | string |
model | query | no | string |
parent_agent_runner_id | query | no | string |
dev_server_image | query | no | string |
file_keys | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
404 | Not Found | — |
422 | Unprocessable Entity | — |
default | error | — |
POST/agent_runners/upload_url
| Name | In | Required | Type |
|---|---|---|---|
account_id | query | yes | string |
filename | query | yes | string |
content_type | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
422 | Unprocessable Entity | — |
default | error | — |
GET/agent_runners/{agent_runner_id}
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PATCH/agent_runners/{agent_runner_id}
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/agent_runners/{agent_runner_id}
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
202 | Accepted | — |
default | error | — |
POST/agent_runners/{agent_runner_id}/archive
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
202 | Accepted | — |
404 | Not Found | — |
422 | Unprocessable Entity | — |
default | error | — |
POST/agent_runners/{agent_runner_id}/commit
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
target_branch | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
409 | Conflict | — |
422 | Unprocessable Entity | — |
default | error | — |
POST/agent_runners/{agent_runner_id}/pull_request
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
409 | Conflict | — |
422 | Unprocessable Entity | — |
default | error | — |
agentRunnerHook5
GET/sites/{site_id}/agent_runner_hooks
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/sites/{site_id}/agent_runner_hooks
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | — |
default | error | — |
GET/sites/{site_id}/agent_runner_hooks/{id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/sites/{site_id}/agent_runner_hooks/{id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
id | path | yes | string |
application/json (required)
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
DELETE/sites/{site_id}/agent_runner_hooks/{id}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | No content | — |
default | error | — |
agentRunnerSession5
GET/agent_runners/{agent_runner_id}/sessions
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
state | query | no | string |
from | query | no | integer |
to | query | no | integer |
order_by | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
POST/agent_runners/{agent_runner_id}/sessions
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
prompt | query | no | string |
agent | query | no | string |
model | query | no | string |
file_keys | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
404 | Not Found | — |
422 | Unprocessable Entity | — |
default | error | — |
GET/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id}
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
agent_runner_session_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PATCH/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id}
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
agent_runner_session_id | path | yes | string |
is_published | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
DELETE/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id}
| Name | In | Required | Type |
|---|---|---|---|
agent_runner_id | path | yes | string |
agent_runner_session_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
202 | Accepted | — |
default | error | — |
aiGateway3
GET/accounts/{account_id}/ai-gateway/token
| Name | In | Required | Type |
|---|---|---|---|
account_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | AI Gateway token for the account | — |
404 | AI Gateway not available for this account | — |
default | error | — |
GET/ai-gateway/providers
| Status | Description | Schema |
|---|---|---|
200 | The mapping of providers and supported models | — |
default | error | — |
GET/sites/{site_id}/ai-gateway/token
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | AI Gateway token for the site | — |
404 | AI Gateway not available for this site | — |
default | error | — |
edgeFunction1
PUT/deploys/{deploy_id}/edge_functions/{code_sha}
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
code_sha | path | yes | string |
X-Nf-Retry-Count | header | no | integer |
application/json (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
x-internal3
POST/deploys/{deploy_id}/plugin_runs
| Name | In | Required | Type |
|---|---|---|---|
deploy_id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
201 | CREATED | — |
default | error | — |
GET/sites/{site_id}/plugin_runs/latest
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
packages | query | yes | array |
state | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
PUT/sites/{site_id}/plugins/{package}
| Name | In | Required | Type |
|---|---|---|---|
site_id | path | yes | string |
package | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
default | error | — |
Try it
Developer reference
https://api.netlify.com/api/v1Netlify's API guide documents a flat 500 requests per minute for most endpoints, with deploy operations held to a stricter 3 deploys per minute and 100 deploys per day. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers so a client can check its current standing; the docs point clients needing more headroom to contact Netlify support rather than publishing a paid-tier override.
- GET/sites
- GET/sites/{site_id}
- POST/sites
- GET/sites/{site_id}/deploys
- POST/sites/{site_id}/deploys