Development — entry 059 of 98

Netlify

Verified Jul 2026

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.

hostingdeploymentjamstackdevops
AuthenticationOAuthRequires an OAuth flow; expect app registration.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreemiumA usable free tier exists, with paid plans for more volume.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score74out of 100
Authentication8/25OAuth flow required
Pricing17/20Freemium tier available
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 74 on greatapis.com
<a href="https://greatapis.com/api/netlify/"><img src="https://greatapis.com/badge/netlify.svg" alt="Scored 74 on greatapis.com"></a>

Auth quickstart

  1. Register an app / run the OAuth flow to obtain a bearer token.
  2. Send it as an Authorization headerAuthorization: Bearer <token>
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://api.netlify.com/api/v1
Auth
netlifyAuth
ticket2
POST/oauth/tickets
Parameters
NameInRequiredType
client_idqueryyesstring
Request body

application/json

Responses
StatusDescriptionSchema
201Created—
401OAuth application not found—
422Validation error—
defaulterror—
GET/oauth/tickets/{ticket_id}
Parameters
NameInRequiredType
ticket_idpathyesstring
Responses
StatusDescriptionSchema
200ok—
defaulterror—
accessToken1
POST/oauth/tickets/{ticket_id}/exchange
Parameters
NameInRequiredType
ticket_idpathyesstring
Responses
StatusDescriptionSchema
201ok—
defaulterror—
user1
GET/user
Responses
StatusDescriptionSchema
200OK—
defaulterror—
accountMembership5
GET/accounts
Parameters
NameInRequiredType
minimalquerynoboolean
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/accounts
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/accounts/{account_id}
Parameters
NameInRequiredType
account_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/accounts/{account_id}
Parameters
NameInRequiredType
account_idpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/accounts/{account_id}
Parameters
NameInRequiredType
account_idpathyesstring
Responses
StatusDescriptionSchema
204Not Content—
defaulterror—
member5
GET/{account_slug}/members
Parameters
NameInRequiredType
account_slugpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/{account_slug}/members
Parameters
NameInRequiredType
account_slugpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
defaulterror—
GET/{account_slug}/members/{member_id}
Parameters
NameInRequiredType
account_slugpathyesstring
member_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/{account_slug}/members/{member_id}
Parameters
NameInRequiredType
account_slugpathyesstring
member_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/{account_slug}/members/{member_id}
Parameters
NameInRequiredType
account_slugpathyesstring
member_idpathyesstring
Responses
StatusDescriptionSchema
204Not Content—
defaulterror—
accountType1
GET/accounts/types
Responses
StatusDescriptionSchema
200OK—
defaulterror—
paymentMethod1
GET/billing/payment_methods
Responses
StatusDescriptionSchema
200OK—
defaulterror—
auditLog1
GET/accounts/{account_id}/audit
Parameters
NameInRequiredType
account_idpathyesstring
queryquerynostring
log_typequerynostring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OK—
defaulterror—
site10
GET/sites
Parameters
NameInRequiredType
namequerynostring
filterquerynostring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites
Parameters
NameInRequiredType
configure_dnsquerynoboolean
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/sites/{site_id}
Parameters
NameInRequiredType
site_idpathyesstring
feature_flagsquerynostring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PATCH/sites/{site_id}
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/sites/{site_id}
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
204Deleted—
defaulterror—
PUT/sites/{site_id}/disable
Parameters
NameInRequiredType
site_idpathyesstring
reasonqueryyesstring
Responses
StatusDescriptionSchema
204No content—
defaulterror—
PUT/sites/{site_id}/enable
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
204No content—
422Cannot enable this site—
defaulterror—
PUT/sites/{site_id}/unlink_repo
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
404Site not found—
GET/{account_slug}/sites
Parameters
NameInRequiredType
namequerynostring
account_slugpathyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/{account_slug}/sites
Parameters
NameInRequiredType
configure_dnsquerynoboolean
account_slugpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
201Created—
defaulterror—
environmentVariables8
GET/accounts/{account_id}/env
Parameters
NameInRequiredType
account_idpathyesstring
context_namequerynostring
scopequerynostring
site_idquerynostring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/accounts/{account_id}/env
Parameters
NameInRequiredType
account_idpathyesstring
site_idquerynostring
Request body

application/json

Responses
StatusDescriptionSchema
201OK—
defaulterror—
GET/accounts/{account_id}/env/{key}
Parameters
NameInRequiredType
account_idpathyesstring
keypathyesstring
site_idquerynostring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/accounts/{account_id}/env/{key}
Parameters
NameInRequiredType
account_idpathyesstring
keypathyesstring
site_idquerynostring
Request body

application/json

Responses
StatusDescriptionSchema
200OK—
defaulterror—
PATCH/accounts/{account_id}/env/{key}
Parameters
NameInRequiredType
account_idpathyesstring
keypathyesstring
site_idquerynostring
Request body

application/json

Responses
StatusDescriptionSchema
201Created (success)—
defaulterror—
DELETE/accounts/{account_id}/env/{key}
Parameters
NameInRequiredType
account_idpathyesstring
keypathyesstring
site_idquerynostring
Responses
StatusDescriptionSchema
204No Content (success)—
defaulterror—
DELETE/accounts/{account_id}/env/{key}/value/{id}
Parameters
NameInRequiredType
account_idpathyesstring
idpathyesstring
keypathyesstring
site_idquerynostring
Responses
StatusDescriptionSchema
204No Content (success)—
defaulterror—
GET/api/v1/sites/{site_id}/env
Parameters
NameInRequiredType
context_namequerynostring
scopequerynostring
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
file3
PUT/deploys/{deploy_id}/files/{path}
Parameters
NameInRequiredType
deploy_idpathyesstring
pathpathyesstring
sizequerynointeger
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
defaulterror—
GET/sites/{site_id}/files
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
GET/sites/{site_id}/files/{file_path}
Parameters
NameInRequiredType
site_idpathyesstring
file_pathpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
metadata2
GET/sites/{site_id}/metadata
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/sites/{site_id}/metadata
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
204No content—
defaulterror—
snippet5
GET/sites/{site_id}/snippets
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/snippets
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
201OK—
defaulterror—
GET/sites/{site_id}/snippets/{snippet_id}
Parameters
NameInRequiredType
site_idpathyesstring
snippet_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/sites/{site_id}/snippets/{snippet_id}
Parameters
NameInRequiredType
site_idpathyesstring
snippet_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
204No content—
defaulterror—
DELETE/sites/{site_id}/snippets/{snippet_id}
Parameters
NameInRequiredType
site_idpathyesstring
snippet_idpathyesstring
Responses
StatusDescriptionSchema
204No content—
defaulterror—
purge1
POST/purge
Request body

application/json (required)

Responses
StatusDescriptionSchema
202OK—
400Invalid request parameters—
404Site not found—
dnsZone11
GET/dns_zones
Parameters
NameInRequiredType
account_slugquerynostring
Responses
StatusDescriptionSchema
200get all DNS zones the user has access to—
defaulterror—
POST/dns_zones
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/dns_zones/{zone_id}
Parameters
NameInRequiredType
zone_idpathyesstring
Responses
StatusDescriptionSchema
200get a single DNS zone—
defaulterror—
DELETE/dns_zones/{zone_id}
Parameters
NameInRequiredType
zone_idpathyesstring
Responses
StatusDescriptionSchema
204delete a single DNS zone—
defaulterror—
GET/dns_zones/{zone_id}/dns_records
Parameters
NameInRequiredType
zone_idpathyesstring
Responses
StatusDescriptionSchema
200get all DNS records for a single DNS zone—
defaulterror—
POST/dns_zones/{zone_id}/dns_records
Parameters
NameInRequiredType
zone_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/dns_zones/{zone_id}/dns_records/{dns_record_id}
Parameters
NameInRequiredType
zone_idpathyesstring
dns_record_idpathyesstring
Responses
StatusDescriptionSchema
200get a single DNS record—
defaulterror—
DELETE/dns_zones/{zone_id}/dns_records/{dns_record_id}
Parameters
NameInRequiredType
zone_idpathyesstring
dns_record_idpathyesstring
Responses
StatusDescriptionSchema
204record deleted—
defaulterror—
PUT/dns_zones/{zone_id}/transfer
Parameters
NameInRequiredType
zone_idpathyesstring
account_idqueryyesstring
transfer_account_idqueryyesstring
transfer_user_idqueryyesstring
Responses
StatusDescriptionSchema
200transfer a DNS zone to another account—
defaulterror—
GET/sites/{site_id}/dns
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/sites/{site_id}/dns
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
sniCertificate3
GET/sites/{site_id}/ssl
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/ssl
Parameters
NameInRequiredType
site_idpathyesstring
certificatequerynostring
keyquerynostring
ca_certificatesquerynostring
Responses
StatusDescriptionSchema
200OK—
422Unprocessable 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"—
defaulterror—
GET/sites/{site_id}/ssl/certificates
Parameters
NameInRequiredType
site_idpathyesstring
domainqueryyesstring
Responses
StatusDescriptionSchema
200Array of SNI Certificates—
404Not Found—
422Unprocessable Entity—
deploy13
GET/deploys/{deploy_id}
Parameters
NameInRequiredType
deploy_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/deploys/{deploy_id}
Parameters
NameInRequiredType
deploy_idpathyesstring
Responses
StatusDescriptionSchema
204No content—
defaulterror—
POST/deploys/{deploy_id}/cancel
Parameters
NameInRequiredType
deploy_idpathyesstring
Responses
StatusDescriptionSchema
201Cancelled—
defaulterror—
POST/deploys/{deploy_id}/lock
Parameters
NameInRequiredType
deploy_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/deploys/{deploy_id}/unlock
Parameters
NameInRequiredType
deploy_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PATCH/deploys/{deploy_id}/validations_report
Parameters
NameInRequiredType
deploy_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
GET/sites/{site_id}/deploys
Parameters
NameInRequiredType
site_idpathyesstring
deploy-previewsquerynoboolean
productionquerynoboolean
statequerynostring
branchquerynostring
latest-publishedquerynoboolean
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/deploys
Parameters
NameInRequiredType
site_idpathyesstring
deploy-previewsquerynoboolean
productionquerynoboolean
statequerynostring
branchquerynostring
latest-publishedquerynoboolean
titlequerynostring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
defaulterror—
GET/sites/{site_id}/deploys/{deploy_id}
Parameters
NameInRequiredType
site_idpathyesstring
deploy_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/sites/{site_id}/deploys/{deploy_id}
Parameters
NameInRequiredType
site_idpathyesstring
deploy_idpathyesstring
commit_refquerynostring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/sites/{site_id}/deploys/{deploy_id}
Parameters
NameInRequiredType
deploy_idpathyesstring
site_idpathyesstring
Responses
StatusDescriptionSchema
204No content—
defaulterror—
POST/sites/{site_id}/deploys/{deploy_id}/restore
Parameters
NameInRequiredType
site_idpathyesstring
deploy_idpathyesstring
Responses
StatusDescriptionSchema
201Created—
defaulterror—
PUT/sites/{site_id}/rollback
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
204No content—
defaulterror—
deployedBranch1
GET/sites/{site_id}/deployed-branches
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
deployKey4
GET/deploy_keys
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/deploy_keys
Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/deploy_keys/{key_id}
Parameters
NameInRequiredType
key_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/deploy_keys/{key_id}
Parameters
NameInRequiredType
key_idpathyesstring
Responses
StatusDescriptionSchema
204Not Content—
defaulterror—
build5
GET/builds/{build_id}
Parameters
NameInRequiredType
build_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/builds/{build_id}/start
Parameters
NameInRequiredType
build_idpathyesstring
buildbot_versionquerynostring
build_versionquerynostring
task_idquerynostring
Responses
StatusDescriptionSchema
204No content—
defaulterror—
GET/sites/{site_id}/builds
Parameters
NameInRequiredType
site_idpathyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/builds
Parameters
NameInRequiredType
site_idpathyesstring
branchquerynostring
clear_cachequerynoboolean
imagequerynostring
template_idquerynostring
titlequerynostring
Responses
StatusDescriptionSchema
200OK—
400Bad Request—
404Not Found—
422Unprocessable Entity—
defaulterror—
GET/{account_id}/builds/status
Parameters
NameInRequiredType
account_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
buildLogMsg1
POST/builds/{build_id}/log
Parameters
NameInRequiredType
build_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
204No content—
defaulterror—
hook6
GET/hooks
Parameters
NameInRequiredType
site_idqueryyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/hooks
Parameters
NameInRequiredType
site_idqueryyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
201OK—
defaulterror—
GET/hooks/{hook_id}
Parameters
NameInRequiredType
hook_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/hooks/{hook_id}
Parameters
NameInRequiredType
hook_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/hooks/{hook_id}
Parameters
NameInRequiredType
hook_idpathyesstring
Responses
StatusDescriptionSchema
204No content—
POST/hooks/{hook_id}/enable
Parameters
NameInRequiredType
hook_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
hookType1
GET/hooks/types
Responses
StatusDescriptionSchema
200OK—
defaulterror—
buildHook5
GET/sites/{site_id}/build_hooks
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/build_hooks
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/sites/{site_id}/build_hooks/{id}
Parameters
NameInRequiredType
site_idpathyesstring
idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/sites/{site_id}/build_hooks/{id}
Parameters
NameInRequiredType
site_idpathyesstring
idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
204No content—
defaulterror—
DELETE/sites/{site_id}/build_hooks/{id}
Parameters
NameInRequiredType
site_idpathyesstring
idpathyesstring
Responses
StatusDescriptionSchema
204No content—
defaulterror—
service3
GET/services/
Parameters
NameInRequiredType
searchquerynostring
Responses
StatusDescriptionSchema
200services—
defaulterror—
GET/services/{addonName}
Parameters
NameInRequiredType
addonNamepathyesstring
Responses
StatusDescriptionSchema
200services—
defaulterror—
GET/services/{addonName}/manifest
Parameters
NameInRequiredType
addonNamepathyesstring
Responses
StatusDescriptionSchema
201retrieving from provider—
defaulterror—
serviceInstance5
GET/sites/{site_id}/service-instances
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/services/{addon}/instances
Parameters
NameInRequiredType
site_idpathyesstring
addonpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/sites/{site_id}/services/{addon}/instances/{instance_id}
Parameters
NameInRequiredType
site_idpathyesstring
addonpathyesstring
instance_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/sites/{site_id}/services/{addon}/instances/{instance_id}
Parameters
NameInRequiredType
site_idpathyesstring
addonpathyesstring
instance_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
204No Content—
defaulterror—
DELETE/sites/{site_id}/services/{addon}/instances/{instance_id}
Parameters
NameInRequiredType
site_idpathyesstring
addonpathyesstring
instance_idpathyesstring
Responses
StatusDescriptionSchema
204Deleted—
defaulterror—
function2
PUT/deploys/{deploy_id}/functions/{name}
Parameters
NameInRequiredType
deploy_idpathyesstring
namepathyesstring
runtimequerynostring
invocation_modequerynostring
timeoutquerynointeger
sizequerynointeger
X-Nf-Retry-Countheadernointeger
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
defaulterror—
GET/sites/{site_id}/functions
Parameters
NameInRequiredType
site_idpathyesstring
filterquerynostring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
form2
GET/sites/{site_id}/forms
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/sites/{site_id}/forms/{form_id}
Parameters
NameInRequiredType
site_idpathyesstring
form_idpathyesstring
Responses
StatusDescriptionSchema
204Deleted—
defaulterror—
submission4
GET/forms/{form_id}/submissions
Parameters
NameInRequiredType
form_idpathyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OK—
defaulterror—
GET/sites/{site_id}/submissions
Parameters
NameInRequiredType
site_idpathyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OK—
defaulterror—
GET/submissions/{submission_id}
Parameters
NameInRequiredType
submission_idpathyesstring
queryquerynostring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/submissions/{submission_id}
Parameters
NameInRequiredType
submission_idpathyesstring
Responses
StatusDescriptionSchema
204Deleted—
defaulterror—
splitTest6
GET/sites/{site_id}/traffic_splits
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200split_tests—
defaulterror—
POST/sites/{site_id}/traffic_splits
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/sites/{site_id}/traffic_splits/{split_test_id}
Parameters
NameInRequiredType
site_idpathyesstring
split_test_idpathyesstring
Responses
StatusDescriptionSchema
200split_test—
defaulterror—
PUT/sites/{site_id}/traffic_splits/{split_test_id}
Parameters
NameInRequiredType
site_idpathyesstring
split_test_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Created—
defaulterror—
POST/sites/{site_id}/traffic_splits/{split_test_id}/publish
Parameters
NameInRequiredType
site_idpathyesstring
split_test_idpathyesstring
Responses
StatusDescriptionSchema
204enable—
defaulterror—
POST/sites/{site_id}/traffic_splits/{split_test_id}/unpublish
Parameters
NameInRequiredType
site_idpathyesstring
split_test_idpathyesstring
Responses
StatusDescriptionSchema
204disabled—
defaulterror—
asset5
GET/sites/{site_id}/assets
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/assets
Parameters
NameInRequiredType
site_idpathyesstring
namequeryyesstring
sizequeryyesinteger
content_typequeryyesstring
visibilityquerynostring
Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/sites/{site_id}/assets/{asset_id}
Parameters
NameInRequiredType
site_idpathyesstring
asset_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/sites/{site_id}/assets/{asset_id}
Parameters
NameInRequiredType
site_idpathyesstring
asset_idpathyesstring
statequeryyesstring
Responses
StatusDescriptionSchema
200Updated—
defaulterror—
DELETE/sites/{site_id}/assets/{asset_id}
Parameters
NameInRequiredType
site_idpathyesstring
asset_idpathyesstring
Responses
StatusDescriptionSchema
204Deleted—
defaulterror—
assetPublicSignature1
GET/sites/{site_id}/assets/{asset_id}/public_signature
Parameters
NameInRequiredType
site_idpathyesstring
asset_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
devServer6
GET/sites/{site_id}/dev_servers
Parameters
NameInRequiredType
site_idpathyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/dev_servers
Parameters
NameInRequiredType
site_idpathyesstring
branchquerynostring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/sites/{site_id}/dev_servers
Parameters
NameInRequiredType
site_idpathyesstring
branchquerynostring
Responses
StatusDescriptionSchema
202OK—
defaulterror—
GET/sites/{site_id}/dev_servers/{dev_server_id}
Parameters
NameInRequiredType
site_idpathyesstring
dev_server_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
POST/sites/{site_id}/dev_servers/{dev_server_id}/activity
Parameters
NameInRequiredType
site_idpathyesstring
dev_server_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
POST/sites/{site_id}/dev_servers/{dev_server_id}/state
Parameters
NameInRequiredType
site_idpathyesstring
dev_server_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
409Conflict—
devServerHook5
GET/sites/{site_id}/dev_server_hooks
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/dev_server_hooks
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/sites/{site_id}/dev_server_hooks/{id}
Parameters
NameInRequiredType
site_idpathyesstring
idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/sites/{site_id}/dev_server_hooks/{id}
Parameters
NameInRequiredType
site_idpathyesstring
idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
204No content—
defaulterror—
DELETE/sites/{site_id}/dev_server_hooks/{id}
Parameters
NameInRequiredType
site_idpathyesstring
idpathyesstring
Responses
StatusDescriptionSchema
204No content—
defaulterror—
database19
GET/sites/{site_id}/database
Parameters
NameInRequiredType
site_idpathyesstring
rolequerynostring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/database
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
200Database already exists—
201Created—
defaulterror—
DELETE/sites/{site_id}/database
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
204Deleted—
defaulterror—
POST/sites/{site_id}/database/branch
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200Branch already exists—
201Created—
defaulterror—
GET/sites/{site_id}/database/branch/{branch_id}
Parameters
NameInRequiredType
site_idpathyesstring
branch_idpathyesstring
rolequerynostring
Responses
StatusDescriptionSchema
200OK—
404Branch not found—
defaulterror—
DELETE/sites/{site_id}/database/branch/{branch_id}
Parameters
NameInRequiredType
site_idpathyesstring
branch_idpathyesstring
Responses
StatusDescriptionSchema
204Deleted—
defaulterror—
PUT/sites/{site_id}/database/branch/{branch_id}/compute/settings
Parameters
NameInRequiredType
site_idpathyesstring
branch_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
403Compute customization requires a Pro or higher plan—
defaulterror—
POST/sites/{site_id}/database/branch/{branch_id}/reset
Parameters
NameInRequiredType
site_idpathyesstring
branch_idpathyesstring
forcequerynoboolean
rolequerynostring
Request body

application/json

Responses
StatusDescriptionSchema
200OK—
400Invalid request — for example, the target is the production branch or the source branch is the same as the target.—
404Database or branch not found—
defaulterror—
GET/sites/{site_id}/database/branches
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
GET/sites/{site_id}/database/compute/settings
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
403Compute customization requires a Pro or higher plan—
defaulterror—
PUT/sites/{site_id}/database/compute/settings
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
403Compute customization requires a Pro or higher plan—
defaulterror—
DELETE/sites/{site_id}/database/compute/settings
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
204Cleared—
403Compute customization requires a Pro or higher plan—
defaulterror—
GET/sites/{site_id}/database/migrations
Parameters
NameInRequiredType
site_idpathyesstring
branchquerynostring
Responses
StatusDescriptionSchema
200OK—
404Database or branch not found—
423Database is disabled—
defaulterror—
POST/sites/{site_id}/database/migrations/{deploy_id}
Parameters
NameInRequiredType
site_idpathyesstring
deploy_idpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
200OK—
409Migration conflict - migration modified or removed after being applied—
422Migration validation failed—
defaulterror—
GET/sites/{site_id}/database/migrations/{name}
Parameters
NameInRequiredType
site_idpathyesstring
namepathyesstring
branchquerynostring
Responses
StatusDescriptionSchema
200OK—
404Migration, database, or branch not found—
423Database is disabled—
defaulterror—
POST/sites/{site_id}/database/snapshot
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
201Created—
defaulterror—
DELETE/sites/{site_id}/database/snapshot/{snapshot_id}
Parameters
NameInRequiredType
site_idpathyesstring
snapshot_idpathyesstring
Responses
StatusDescriptionSchema
204Deleted—
defaulterror—
POST/sites/{site_id}/database/snapshot/{snapshot_id}/restore
Parameters
NameInRequiredType
site_idpathyesstring
snapshot_idpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
200OK—
defaulterror—
GET/sites/{site_id}/database/snapshots
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
agentRunner9
GET/agent_runners
Parameters
NameInRequiredType
account_idqueryyesstring
site_idqueryyesstring
pagequerynointeger
per_pagequerynointeger
statequerynostring
titlequerynostring
branchquerynostring
result_branchquerynostring
fromquerynointeger
toquerynointeger
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/agent_runners
Parameters
NameInRequiredType
site_idqueryyesstring
deploy_idquerynostring
branchquerynostring
promptquerynostring
agentquerynostring
modelquerynostring
parent_agent_runner_idquerynostring
dev_server_imagequerynostring
file_keysquerynoarray
Responses
StatusDescriptionSchema
200OK—
404Not Found—
422Unprocessable Entity—
defaulterror—
POST/agent_runners/upload_url
Parameters
NameInRequiredType
account_idqueryyesstring
filenamequeryyesstring
content_typequeryyesstring
Responses
StatusDescriptionSchema
200OK—
400Bad Request—
422Unprocessable Entity—
defaulterror—
GET/agent_runners/{agent_runner_id}
Parameters
NameInRequiredType
agent_runner_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PATCH/agent_runners/{agent_runner_id}
Parameters
NameInRequiredType
agent_runner_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/agent_runners/{agent_runner_id}
Parameters
NameInRequiredType
agent_runner_idpathyesstring
Responses
StatusDescriptionSchema
202Accepted—
defaulterror—
POST/agent_runners/{agent_runner_id}/archive
Parameters
NameInRequiredType
agent_runner_idpathyesstring
Responses
StatusDescriptionSchema
202Accepted—
404Not Found—
422Unprocessable Entity—
defaulterror—
POST/agent_runners/{agent_runner_id}/commit
Parameters
NameInRequiredType
agent_runner_idpathyesstring
target_branchqueryyesstring
Responses
StatusDescriptionSchema
200OK—
400Bad Request—
409Conflict—
422Unprocessable Entity—
defaulterror—
POST/agent_runners/{agent_runner_id}/pull_request
Parameters
NameInRequiredType
agent_runner_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
400Bad Request—
409Conflict—
422Unprocessable Entity—
defaulterror—
agentRunnerHook5
GET/sites/{site_id}/agent_runner_hooks
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/sites/{site_id}/agent_runner_hooks
Parameters
NameInRequiredType
site_idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
201Created—
defaulterror—
GET/sites/{site_id}/agent_runner_hooks/{id}
Parameters
NameInRequiredType
site_idpathyesstring
idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/sites/{site_id}/agent_runner_hooks/{id}
Parameters
NameInRequiredType
site_idpathyesstring
idpathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
204No content—
defaulterror—
DELETE/sites/{site_id}/agent_runner_hooks/{id}
Parameters
NameInRequiredType
site_idpathyesstring
idpathyesstring
Responses
StatusDescriptionSchema
204No content—
defaulterror—
agentRunnerSession5
GET/agent_runners/{agent_runner_id}/sessions
Parameters
NameInRequiredType
agent_runner_idpathyesstring
pagequerynointeger
per_pagequerynointeger
statequerynostring
fromquerynointeger
toquerynointeger
order_byquerynostring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
POST/agent_runners/{agent_runner_id}/sessions
Parameters
NameInRequiredType
agent_runner_idpathyesstring
promptquerynostring
agentquerynostring
modelquerynostring
file_keysquerynoarray
Responses
StatusDescriptionSchema
200OK—
404Not Found—
422Unprocessable Entity—
defaulterror—
GET/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id}
Parameters
NameInRequiredType
agent_runner_idpathyesstring
agent_runner_session_idpathyesstring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PATCH/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id}
Parameters
NameInRequiredType
agent_runner_idpathyesstring
agent_runner_session_idpathyesstring
is_publishedquerynoboolean
Responses
StatusDescriptionSchema
200OK—
defaulterror—
DELETE/agent_runners/{agent_runner_id}/sessions/{agent_runner_session_id}
Parameters
NameInRequiredType
agent_runner_idpathyesstring
agent_runner_session_idpathyesstring
Responses
StatusDescriptionSchema
202Accepted—
defaulterror—
aiGateway3
GET/accounts/{account_id}/ai-gateway/token
Parameters
NameInRequiredType
account_idpathyesstring
Responses
StatusDescriptionSchema
200AI Gateway token for the account—
404AI Gateway not available for this account—
defaulterror—
GET/ai-gateway/providers
Responses
StatusDescriptionSchema
200The mapping of providers and supported models—
defaulterror—
GET/sites/{site_id}/ai-gateway/token
Parameters
NameInRequiredType
site_idpathyesstring
Responses
StatusDescriptionSchema
200AI Gateway token for the site—
404AI Gateway not available for this site—
defaulterror—
edgeFunction1
PUT/deploys/{deploy_id}/edge_functions/{code_sha}
Parameters
NameInRequiredType
deploy_idpathyesstring
code_shapathyesstring
X-Nf-Retry-Countheadernointeger
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OK—
defaulterror—
x-internal3
POST/deploys/{deploy_id}/plugin_runs
Parameters
NameInRequiredType
deploy_idpathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
201CREATED—
defaulterror—
GET/sites/{site_id}/plugin_runs/latest
Parameters
NameInRequiredType
site_idpathyesstring
packagesqueryyesarray
statequerynostring
Responses
StatusDescriptionSchema
200OK—
defaulterror—
PUT/sites/{site_id}/plugins/{package}
Parameters
NameInRequiredType
site_idpathyesstring
packagepathyesstring
Request body

application/json

Responses
StatusDescriptionSchema
200OK—
defaulterror—

Try it

Developer reference

Base URLhttps://api.netlify.com/api/v1
Rate limit

Netlify'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.

Key endpoints
  • GET/sites
  • GET/sites/{site_id}
  • POST/sites
  • GET/sites/{site_id}/deploys
  • POST/sites/{site_id}/deploys

Changelog

Spec version2.57.1
Tracked paths116

No change recorded yet.

Tracking since Sep 2026. See every tracked change ↗ ·Subscribe with RSS ↗