curl --request GET \
--url 'https://api.upsolve.ai/v1/api/dashboard/list-workspaces?apiKey='import requests
url = "https://api.upsolve.ai/v1/api/dashboard/list-workspaces?apiKey="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.upsolve.ai/v1/api/dashboard/list-workspaces?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/dashboard/list-workspaces?apiKey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.upsolve.ai/v1/api/dashboard/list-workspaces?apiKey="
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.upsolve.ai/v1/api/dashboard/list-workspaces?apiKey=")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.upsolve.ai/v1/api/dashboard/list-workspaces?apiKey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"workspaces": [
"<unknown>"
]
}
}{
"status": "error",
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}List Workspaces
Lists all workspaces in your organization along with their primary dashboard information. Requires an Upsolve API key. After your organization migrates to v2, this lists your applications in the same shape (each keyed by the v1 workspace it was migrated from) — prefer GET /v2/api/applications.
curl --request GET \
--url 'https://api.upsolve.ai/v1/api/dashboard/list-workspaces?apiKey='import requests
url = "https://api.upsolve.ai/v1/api/dashboard/list-workspaces?apiKey="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.upsolve.ai/v1/api/dashboard/list-workspaces?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/dashboard/list-workspaces?apiKey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.upsolve.ai/v1/api/dashboard/list-workspaces?apiKey="
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.upsolve.ai/v1/api/dashboard/list-workspaces?apiKey=")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.upsolve.ai/v1/api/dashboard/list-workspaces?apiKey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"workspaces": [
"<unknown>"
]
}
}{
"status": "error",
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}Authorizations
Query Parameters
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"
Optional team ID to filter workspaces
Optional project ID to filter workspaces
^([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})$Was this page helpful?