curl --request PUT \
--url 'https://api.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey=' \
--header 'Content-Type: application/json' \
--data '
{
"apiKey": "up_embed_************",
"organizationId": "123e4567-e89b-12d3-a456-426614174000",
"externalId": "acme-internal-uuid-1234"
}
'import requests
url = "https://api.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey="
payload = {
"apiKey": "up_embed_************",
"organizationId": "123e4567-e89b-12d3-a456-426614174000",
"externalId": "acme-internal-uuid-1234"
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
apiKey: 'up_embed_************',
organizationId: '123e4567-e89b-12d3-a456-426614174000',
externalId: 'acme-internal-uuid-1234'
})
};
fetch('https://api.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey=', 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.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'apiKey' => 'up_embed_************',
'organizationId' => '123e4567-e89b-12d3-a456-426614174000',
'externalId' => 'acme-internal-uuid-1234'
]),
CURLOPT_HTTPHEADER => [
"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.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey="
payload := strings.NewReader("{\n \"apiKey\": \"up_embed_************\",\n \"organizationId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"externalId\": \"acme-internal-uuid-1234\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://api.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey=")
.header("Content-Type", "application/json")
.body("{\n \"apiKey\": \"up_embed_************\",\n \"organizationId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"externalId\": \"acme-internal-uuid-1234\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"apiKey\": \"up_embed_************\",\n \"organizationId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"externalId\": \"acme-internal-uuid-1234\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"project_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"external_id": "<string>",
"properties": {},
"created_at": "<unknown>",
"updated_at": "<unknown>",
"environment": "production",
"is_managed": false
}
}{
"status": "error",
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}Update Project Organization
Update a project organization
curl --request PUT \
--url 'https://api.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey=' \
--header 'Content-Type: application/json' \
--data '
{
"apiKey": "up_embed_************",
"organizationId": "123e4567-e89b-12d3-a456-426614174000",
"externalId": "acme-internal-uuid-1234"
}
'import requests
url = "https://api.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey="
payload = {
"apiKey": "up_embed_************",
"organizationId": "123e4567-e89b-12d3-a456-426614174000",
"externalId": "acme-internal-uuid-1234"
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
apiKey: 'up_embed_************',
organizationId: '123e4567-e89b-12d3-a456-426614174000',
externalId: 'acme-internal-uuid-1234'
})
};
fetch('https://api.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey=', 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.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'apiKey' => 'up_embed_************',
'organizationId' => '123e4567-e89b-12d3-a456-426614174000',
'externalId' => 'acme-internal-uuid-1234'
]),
CURLOPT_HTTPHEADER => [
"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.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey="
payload := strings.NewReader("{\n \"apiKey\": \"up_embed_************\",\n \"organizationId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"externalId\": \"acme-internal-uuid-1234\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://api.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey=")
.header("Content-Type", "application/json")
.body("{\n \"apiKey\": \"up_embed_************\",\n \"organizationId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"externalId\": \"acme-internal-uuid-1234\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.upsolve.ai/v1/api/projects/{projectId}/organizations/{projectOrganizationId}?apiKey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"apiKey\": \"up_embed_************\",\n \"organizationId\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"externalId\": \"acme-internal-uuid-1234\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"project_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"external_id": "<string>",
"properties": {},
"created_at": "<unknown>",
"updated_at": "<unknown>",
"environment": "production",
"is_managed": false
}
}{
"status": "error",
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}Authorizations
apiKey MUST be supplied within the request body instead of query
Path Parameters
PUT /v1/api/projects/:projectId/organizations/:projectOrganizationId Parameter
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$PUT /v1/api/projects/:projectId/organizations/:projectOrganizationId Parameter
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$Body
PUT /v1/api/projects/:projectId/organizations/:projectOrganizationId Request body
Upsolve API key, generated under Account → Developer settings in the Upsolve Hub. Keys are user-scoped: pass organizationId alongside the key to select which org to act on.
1"up_embed_************"
Your Upsolve organization's UUID — the org that owns the API key and project. This is NOT a project organization: do not pass a value registered via /projects/register-organization, and do not pass an externalId (only projectOrganizationId accepts those). Omit it when using an org-bound API key — the org is read from the key and any value sent here is ignored. Required only for user-scoped API keys (created under Account → Developer settings) and for the Supabase JWT path, where the org is ambiguous and membership is verified against it.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"123e4567-e89b-12d3-a456-426614174000"
The organization's display name.
1Key/value metadata for the organization, used to scope and secure data for its users. Replaces the stored set.
Show child attributes
Show child attributes
Your own identifier for this organization (e.g. your internal company UUID), as register-organization's externalId. embed-token and register-user find the organization by it. Unique within the project. null removes it.
1"acme-internal-uuid-1234"
Was this page helpful?