Create node
curl --request POST \
--url https://api.chainstack.com/v2/nodes/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My Ethereum node",
"project": "PR-123-456-789",
"cloud": "CC-0001",
"blockchain": "BC-000-000"
}
'import requests
url = "https://api.chainstack.com/v2/nodes/"
payload = {
"name": "My Ethereum node",
"project": "PR-123-456-789",
"cloud": "CC-0001",
"blockchain": "BC-000-000"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My Ethereum node',
project: 'PR-123-456-789',
cloud: 'CC-0001',
blockchain: 'BC-000-000'
})
};
fetch('https://api.chainstack.com/v2/nodes/', 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.chainstack.com/v2/nodes/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'My Ethereum node',
'project' => 'PR-123-456-789',
'cloud' => 'CC-0001',
'blockchain' => 'BC-000-000'
]),
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.chainstack.com/v2/nodes/"
payload := strings.NewReader("{\n \"name\": \"My Ethereum node\",\n \"project\": \"PR-123-456-789\",\n \"cloud\": \"CC-0001\",\n \"blockchain\": \"BC-000-000\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.chainstack.com/v2/nodes/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My Ethereum node\",\n \"project\": \"PR-123-456-789\",\n \"cloud\": \"CC-0001\",\n \"blockchain\": \"BC-000-000\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.chainstack.com/v2/nodes/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My Ethereum node\",\n \"project\": \"PR-123-456-789\",\n \"cloud\": \"CC-0001\",\n \"blockchain\": \"BC-000-000\"\n}"
response = http.request(request)
puts response.read_body{
"id": "ND-123-456-789",
"name": "My Ethereum node",
"network": "mainnet",
"protocol": "ethereum",
"project": "PR-123-456-789",
"cloud": "CC-0001",
"region": "us-east-1",
"provider": "aws",
"status": "running",
"details": {
"api_namespaces": [
"net",
"eth",
"web3",
"txpool",
"debug"
],
"https_endpoint": "https://nd-123-456-789.p2pify.com",
"wss_endpoint": "wss://ws-nd-123-456-789.p2pify.com",
"beacon_endpoint": "https://beacon-nd-123-456-789.p2pify.com",
"graphql_endpoint": "https://nd-123-456-789.p2pify.com/graphql"
},
"blockchain": "BC-000-000"
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Node v2
Create a node with the Chainstack Platform API v2
Create a blockchain node using the Chainstack Platform API v2 with the new deployment options model. Send a POST request to /v2/nodes/ with the configuration.
POST
/
v2
/
nodes
/
Create node
curl --request POST \
--url https://api.chainstack.com/v2/nodes/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My Ethereum node",
"project": "PR-123-456-789",
"cloud": "CC-0001",
"blockchain": "BC-000-000"
}
'import requests
url = "https://api.chainstack.com/v2/nodes/"
payload = {
"name": "My Ethereum node",
"project": "PR-123-456-789",
"cloud": "CC-0001",
"blockchain": "BC-000-000"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My Ethereum node',
project: 'PR-123-456-789',
cloud: 'CC-0001',
blockchain: 'BC-000-000'
})
};
fetch('https://api.chainstack.com/v2/nodes/', 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.chainstack.com/v2/nodes/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'My Ethereum node',
'project' => 'PR-123-456-789',
'cloud' => 'CC-0001',
'blockchain' => 'BC-000-000'
]),
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.chainstack.com/v2/nodes/"
payload := strings.NewReader("{\n \"name\": \"My Ethereum node\",\n \"project\": \"PR-123-456-789\",\n \"cloud\": \"CC-0001\",\n \"blockchain\": \"BC-000-000\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.chainstack.com/v2/nodes/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My Ethereum node\",\n \"project\": \"PR-123-456-789\",\n \"cloud\": \"CC-0001\",\n \"blockchain\": \"BC-000-000\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.chainstack.com/v2/nodes/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My Ethereum node\",\n \"project\": \"PR-123-456-789\",\n \"cloud\": \"CC-0001\",\n \"blockchain\": \"BC-000-000\"\n}"
response = http.request(request)
puts response.read_body{
"id": "ND-123-456-789",
"name": "My Ethereum node",
"network": "mainnet",
"protocol": "ethereum",
"project": "PR-123-456-789",
"cloud": "CC-0001",
"region": "us-east-1",
"provider": "aws",
"status": "running",
"details": {
"api_namespaces": [
"net",
"eth",
"web3",
"txpool",
"debug"
],
"https_endpoint": "https://nd-123-456-789.p2pify.com",
"wss_endpoint": "wss://ws-nd-123-456-789.p2pify.com",
"beacon_endpoint": "https://beacon-nd-123-456-789.p2pify.com",
"graphql_endpoint": "https://nd-123-456-789.p2pify.com/graphql"
},
"blockchain": "BC-000-000"
}{
"error": {
"code": "<string>",
"message": "<string>",
"fields": {}
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
Chainstack API uses API keys to authenticate requests. You can view and manage your API keys in the platform UI.
Your API keys carry many privileges, so be sure to keep them secure!
Provide your API key as the Authorization header. The value of the header consists of Bearer prefix and secret key generated through the platform UI.
curl -X GET 'https://api.chainstack.com/v1/organization/' \
--header 'Authorization: Bearer FX7CWlLg.FMpAO8cgCX2N7s41EncRru2nb5CmTZUt'
All API requests must be made over HTTPS.
Body
application/json
Response
Name of the node.
Network name.
Protocol name.
ID of the project.
ID of the cloud.
Cloud region.
Cloud provider.
Status of the node.
Protocol-specific attributes.
Blockchain identifier.
Example:
"BC-000-000"
Last modified on May 4, 2026
Was this page helpful?