curl --request PATCH \
--url https://api.nango.dev/environments/{environmentUuid} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "staging",
"is_production": true,
"callback_url": "<string>",
"slack_notifications": true,
"otlp_endpoint": "<string>",
"otlp_headers": [
{
"name": "<string>",
"value": "<string>"
}
],
"webhooks": {
"primary_url": "<string>",
"secondary_url": "<string>",
"on_sync_completion_always": true,
"on_auth_creation": true,
"on_auth_refresh_error": true,
"on_sync_error": true,
"on_async_action_completion": true,
"on_connection_deletion": true
}
}
'import requests
url = "https://api.nango.dev/environments/{environmentUuid}"
payload = {
"name": "staging",
"is_production": True,
"callback_url": "<string>",
"slack_notifications": True,
"otlp_endpoint": "<string>",
"otlp_headers": [
{
"name": "<string>",
"value": "<string>"
}
],
"webhooks": {
"primary_url": "<string>",
"secondary_url": "<string>",
"on_sync_completion_always": True,
"on_auth_creation": True,
"on_auth_refresh_error": True,
"on_sync_error": True,
"on_async_action_completion": True,
"on_connection_deletion": True
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'staging',
is_production: true,
callback_url: '<string>',
slack_notifications: true,
otlp_endpoint: '<string>',
otlp_headers: [{name: '<string>', value: '<string>'}],
webhooks: {
primary_url: '<string>',
secondary_url: '<string>',
on_sync_completion_always: true,
on_auth_creation: true,
on_auth_refresh_error: true,
on_sync_error: true,
on_async_action_completion: true,
on_connection_deletion: true
}
})
};
fetch('https://api.nango.dev/environments/{environmentUuid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.nango.dev/environments/{environmentUuid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'staging',
'is_production' => true,
'callback_url' => '<string>',
'slack_notifications' => true,
'otlp_endpoint' => '<string>',
'otlp_headers' => [
[
'name' => '<string>',
'value' => '<string>'
]
],
'webhooks' => [
'primary_url' => '<string>',
'secondary_url' => '<string>',
'on_sync_completion_always' => true,
'on_auth_creation' => true,
'on_auth_refresh_error' => true,
'on_sync_error' => true,
'on_async_action_completion' => true,
'on_connection_deletion' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.nango.dev/environments/{environmentUuid}"
payload := strings.NewReader("{\n \"name\": \"staging\",\n \"is_production\": true,\n \"callback_url\": \"<string>\",\n \"slack_notifications\": true,\n \"otlp_endpoint\": \"<string>\",\n \"otlp_headers\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"webhooks\": {\n \"primary_url\": \"<string>\",\n \"secondary_url\": \"<string>\",\n \"on_sync_completion_always\": true,\n \"on_auth_creation\": true,\n \"on_auth_refresh_error\": true,\n \"on_sync_error\": true,\n \"on_async_action_completion\": true,\n \"on_connection_deletion\": true\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.nango.dev/environments/{environmentUuid}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"staging\",\n \"is_production\": true,\n \"callback_url\": \"<string>\",\n \"slack_notifications\": true,\n \"otlp_endpoint\": \"<string>\",\n \"otlp_headers\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"webhooks\": {\n \"primary_url\": \"<string>\",\n \"secondary_url\": \"<string>\",\n \"on_sync_completion_always\": true,\n \"on_auth_creation\": true,\n \"on_auth_refresh_error\": true,\n \"on_sync_error\": true,\n \"on_async_action_completion\": true,\n \"on_connection_deletion\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nango.dev/environments/{environmentUuid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"staging\",\n \"is_production\": true,\n \"callback_url\": \"<string>\",\n \"slack_notifications\": true,\n \"otlp_endpoint\": \"<string>\",\n \"otlp_headers\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"webhooks\": {\n \"primary_url\": \"<string>\",\n \"secondary_url\": \"<string>\",\n \"on_sync_completion_always\": true,\n \"on_auth_creation\": true,\n \"on_auth_refresh_error\": true,\n \"on_sync_error\": true,\n \"on_async_action_completion\": true,\n \"on_connection_deletion\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}Update an environment
Update an environment
curl --request PATCH \
--url https://api.nango.dev/environments/{environmentUuid} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "staging",
"is_production": true,
"callback_url": "<string>",
"slack_notifications": true,
"otlp_endpoint": "<string>",
"otlp_headers": [
{
"name": "<string>",
"value": "<string>"
}
],
"webhooks": {
"primary_url": "<string>",
"secondary_url": "<string>",
"on_sync_completion_always": true,
"on_auth_creation": true,
"on_auth_refresh_error": true,
"on_sync_error": true,
"on_async_action_completion": true,
"on_connection_deletion": true
}
}
'import requests
url = "https://api.nango.dev/environments/{environmentUuid}"
payload = {
"name": "staging",
"is_production": True,
"callback_url": "<string>",
"slack_notifications": True,
"otlp_endpoint": "<string>",
"otlp_headers": [
{
"name": "<string>",
"value": "<string>"
}
],
"webhooks": {
"primary_url": "<string>",
"secondary_url": "<string>",
"on_sync_completion_always": True,
"on_auth_creation": True,
"on_auth_refresh_error": True,
"on_sync_error": True,
"on_async_action_completion": True,
"on_connection_deletion": True
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'staging',
is_production: true,
callback_url: '<string>',
slack_notifications: true,
otlp_endpoint: '<string>',
otlp_headers: [{name: '<string>', value: '<string>'}],
webhooks: {
primary_url: '<string>',
secondary_url: '<string>',
on_sync_completion_always: true,
on_auth_creation: true,
on_auth_refresh_error: true,
on_sync_error: true,
on_async_action_completion: true,
on_connection_deletion: true
}
})
};
fetch('https://api.nango.dev/environments/{environmentUuid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.nango.dev/environments/{environmentUuid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'staging',
'is_production' => true,
'callback_url' => '<string>',
'slack_notifications' => true,
'otlp_endpoint' => '<string>',
'otlp_headers' => [
[
'name' => '<string>',
'value' => '<string>'
]
],
'webhooks' => [
'primary_url' => '<string>',
'secondary_url' => '<string>',
'on_sync_completion_always' => true,
'on_auth_creation' => true,
'on_auth_refresh_error' => true,
'on_sync_error' => true,
'on_async_action_completion' => true,
'on_connection_deletion' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.nango.dev/environments/{environmentUuid}"
payload := strings.NewReader("{\n \"name\": \"staging\",\n \"is_production\": true,\n \"callback_url\": \"<string>\",\n \"slack_notifications\": true,\n \"otlp_endpoint\": \"<string>\",\n \"otlp_headers\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"webhooks\": {\n \"primary_url\": \"<string>\",\n \"secondary_url\": \"<string>\",\n \"on_sync_completion_always\": true,\n \"on_auth_creation\": true,\n \"on_auth_refresh_error\": true,\n \"on_sync_error\": true,\n \"on_async_action_completion\": true,\n \"on_connection_deletion\": true\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.nango.dev/environments/{environmentUuid}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"staging\",\n \"is_production\": true,\n \"callback_url\": \"<string>\",\n \"slack_notifications\": true,\n \"otlp_endpoint\": \"<string>\",\n \"otlp_headers\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"webhooks\": {\n \"primary_url\": \"<string>\",\n \"secondary_url\": \"<string>\",\n \"on_sync_completion_always\": true,\n \"on_auth_creation\": true,\n \"on_auth_refresh_error\": true,\n \"on_sync_error\": true,\n \"on_async_action_completion\": true,\n \"on_connection_deletion\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nango.dev/environments/{environmentUuid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"staging\",\n \"is_production\": true,\n \"callback_url\": \"<string>\",\n \"slack_notifications\": true,\n \"otlp_endpoint\": \"<string>\",\n \"otlp_headers\": [\n {\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"webhooks\": {\n \"primary_url\": \"<string>\",\n \"secondary_url\": \"<string>\",\n \"on_sync_completion_always\": true,\n \"on_auth_creation\": true,\n \"on_auth_refresh_error\": true,\n \"on_sync_error\": true,\n \"on_async_action_completion\": true,\n \"on_connection_deletion\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"errors": [
{}
]
}
}account:environments:update scope.webhooks, retain their existing values.
Changing is_production additionally requires account:environments:set_production. The reserved prod environment cannot be renamed or have its production flag changed.
Changing OpenTelemetry settings requires access to realtime logs export (included with the Growth add-on).
otlp_headers replaces the entire header set; pass an empty array to clear it.Authorizations
An Environment API key from your Nango environment, or an Account API key for account-level endpoints.
Path Parameters
Environment UUID.
Body
Environment name. Lowercase letters, digits, hyphens, and underscores only. Max 255 characters. The reserved prod environment cannot be renamed.
255^[a-z0-9_-]+$"staging"
Change the production flag. Requires account:environments:set_production in addition to account:environments:update. The reserved prod environment cannot have its production flag changed.
Custom OAuth callback URL for this environment.
Whether Slack notifications are enabled for this environment.
OpenTelemetry collector endpoint. Requires a plan with OpenTelemetry export. Pass an empty string to set an empty endpoint.
Headers sent with OpenTelemetry export requests. Requires a plan with OpenTelemetry export. Replaces the entire header set; pass an empty array to clear it. Omitted headers are preserved. Maximum 100 headers.
100Show child attributes
Show child attributes
Partial webhook settings. Omitted fields retain their existing values.
Show child attributes
Show child attributes
Response
Successfully updated the environment.
true
Was this page helpful?