Skip to main content
Pinecone Docs
current

Search documentation

Type to search this documentation.

Create a workspace

Create a Nexus workspace. The workspace name must be unique within the project.

Workspaces are created asynchronously. On success the workspace is returned in the Initializing state with ready set to false. Poll Describe workspace until the workspace reaches the Ready state before using it.

POST /workspaces

cURL
curl --request POST \
  --url https://api.pinecone.io/workspaces \
  --header 'Api-Key: <api-key>' \
  --header 'X-Pinecone-Api-Version: <x-pinecone-api-version>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "production",
  "spec": {
    "byoc": {
      "environment": "aws-us-east-1-b921.byoc"
    }
  }
}'
Python
import requests

url = "https://api.pinecone.io/workspaces"

payload = {
  "name": "production",
  "spec": {
    "byoc": {
      "environment": "aws-us-east-1-b921.byoc"
    }
  }
}
headers = {
    "Api-Key": "<api-key>",
    "X-Pinecone-Api-Version": "<x-pinecone-api-version>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
JavaScript
const options = {method: "POST", headers: {"Api-Key": "<api-key>", "X-Pinecone-Api-Version": "<x-pinecone-api-version>", "Content-Type": "application/json"}, body: JSON.stringify({
  "name": "production",
  "spec": {
    "byoc": {
      "environment": "aws-us-east-1-b921.byoc"
    }
  }
})};

fetch("https://api.pinecone.io/workspaces", options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.pinecone.io/workspaces",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"name\":\"production\",\"spec\":{\"byoc\":{\"environment\":\"aws-us-east-1-b921.byoc\"}}}",
  CURLOPT_HTTPHEADER => [
    "Api-Key: <api-key>",
    "X-Pinecone-Api-Version: <x-pinecone-api-version>",
    "Content-Type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
Go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.pinecone.io/workspaces"

	payload := strings.NewReader("{\"name\":\"production\",\"spec\":{\"byoc\":{\"environment\":\"aws-us-east-1-b921.byoc\"}}}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Api-Key", "<api-key>")
	req.Header.Add("X-Pinecone-Api-Version", "<x-pinecone-api-version>")
	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))

}
Java
HttpResponse<String> response = Unirest.post("https://api.pinecone.io/workspaces")
  .header("Api-Key", "<api-key>")
  .header("X-Pinecone-Api-Version", "<x-pinecone-api-version>")
  .header("Content-Type", "application/json")
  .body("{\"name\":\"production\",\"spec\":{\"byoc\":{\"environment\":\"aws-us-east-1-b921.byoc\"}}}")
  .asString();
Ruby
require 'uri'
require 'net/http'

url = URI("https://api.pinecone.io/workspaces")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Api-Key"] = '<api-key>'
request["X-Pinecone-Api-Version"] = '<x-pinecone-api-version>'
request["Content-Type"] = 'application/json'
request.body = "{\"name\":\"production\",\"spec\":{\"byoc\":{\"environment\":\"aws-us-east-1-b921.byoc\"}}}"

response = http.request(request)
puts response.read_body
201
{
  "created_at": "2026-06-01T00:00:00.000Z",
  "host": "production-c01b5b5.wksp.aws-us-east-1-b921.byoc.pinecone.io",
  "name": "production",
  "spec": {
    "byoc": {
      "environment": "aws-us-east-1-b921.byoc"
    }
  },
  "status": {
    "ready": false,
    "state": "Initializing"
  },
  "updated_at": "2026-06-01T00:00:00.000Z"
}
400
{
  "error": {
    "code": "INVALID_ARGUMENT",
    "message": "Workspace name must be 1-45 characters, contain only lowercase alphanumeric characters or '-', and start and end with an alphanumeric character."
  },
  "status": 400
}
401
{
  "error": {
    "code": "UNAUTHENTICATED",
    "message": "Invalid API key."
  },
  "status": 401
}
403
{
  "error": {
    "code": "FORBIDDEN",
    "message": "This project has reached its workspace limit. Delete an existing workspace or contact support to raise the limit."
  },
  "status": 403
}
409
{
  "error": {
    "code": "ALREADY_EXISTS",
    "message": "A workspace named 'production' already exists in this project. Choose a different name."
  },
  "status": 409
}
422
{
  "error": {
    "code": "UNPROCESSABLE_ENTITY",
    "message": "Failed to deserialize the JSON body into the target type: missing field `spec` at line 1 column 20"
  },
  "status": 422
}
500
{
  "error": {
    "code": "UNKNOWN",
    "message": "Internal server error"
  },
  "status": 500
}
Api-Keystringrequired

An API Key is required to call Pinecone APIs. Get yours from the console.

X-Pinecone-Api-Versionstringrequired

Required date-based version header

Typestring
Default2026-07

The desired configuration for the workspace.

namestringrequired

The name of the workspace. Resource name must be 1-45 characters long, start and end with an alphanumeric character, and consist only of lower case alphanumeric characters or '-'.

Required string length: 1 - 45. Example: example-workspace

Typestring
specobjectrequired

The spec object defines the environment in which the workspace's contexts are created. Workspaces are created in a customer-managed BYOC (Bring Your Own Cloud) environment.

Typeobject
Show child attributes
byocobjectrequired

Configuration needed to create a workspace in a BYOC (Bring Your Own Cloud) environment.

Typeobject
Show child attributes
environmentstringrequired

The BYOC environment where the workspace's contexts are hosted.

Example: aws-us-east-1-b921.byoc

Typestring

201 — The workspace create request has been accepted. The workspace is being provisioned asynchronously and starts in the Initializing state.

Describes a workspace, a project-scoped grouping of contexts.

namestringrequired

The name of the workspace. Resource name must be 1-45 characters long, start and end with an alphanumeric character, and consist only of lower case alphanumeric characters or '-'.

Required string length: 1 - 45. Example: example-workspace

Typestring
specobjectrequired

The spec object defines the environment in which the workspace's contexts are created. Workspaces are created in a customer-managed BYOC (Bring Your Own Cloud) environment.

Typeobject
Show child attributes
byocobjectrequired

Configuration needed to create a workspace in a BYOC (Bring Your Own Cloud) environment.

Typeobject
Show child attributes
environmentstringrequired

The BYOC environment where the workspace's contexts are hosted.

Example: aws-us-east-1-b921.byoc

Typestring
hoststringrequired

The URL address where the workspace is hosted.

Example: production-c01b5b5.wksp.prod.pinecone.io

Typestring
created_atstringrequired

The date and time the workspace was created.

Example: 2026-06-21T00:00:00.000Z

Typestring
updated_atstringrequired

The date and time the workspace was last updated.

Example: 2026-06-21T00:00:00.000Z

Typestring
statusobjectrequired

The current status of the workspace.

Typeobject
Show child attributes
readybooleanrequired

Whether the workspace is ready for use.

Typeboolean
statestringrequired

The state of the workspace. Possible values: Initializing, InitializationFailed, Ready, or Terminating.

Typestring
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu