curl --request GET \
--url https://api.hq.zone/v1/api/apps \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hq.zone/v1/api/apps"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hq.zone/v1/api/apps', 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.hq.zone/v1/api/apps",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.hq.zone/v1/api/apps"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.hq.zone/v1/api/apps")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hq.zone/v1/api/apps")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"apps": [
{
"created_at": 123,
"declared_port": 123,
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_activity_at": 123,
"run_mode": "<string>",
"slug": "<string>",
"state": "<string>",
"url": "<string>",
"visibility": "<string>",
"backing_conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"max_persistent": 123,
"used": 1
}List apps
Returns the workspace’s catalog of persistent app surfaces, visible to any member of the workspace, excluding destroyed apps and ordered by most recent activity. Each app includes its id, slug, state, visibility (public or private), run mode, declared port, originating conversation id (null if that conversation was deleted), a ready-to-open visitor URL, and creation/last-activity timestamps. Also returns the workspace’s app quota and how many apps currently count against it.
curl --request GET \
--url https://api.hq.zone/v1/api/apps \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hq.zone/v1/api/apps"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hq.zone/v1/api/apps', 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.hq.zone/v1/api/apps",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.hq.zone/v1/api/apps"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.hq.zone/v1/api/apps")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hq.zone/v1/api/apps")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"apps": [
{
"created_at": 123,
"declared_port": 123,
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_activity_at": 123,
"run_mode": "<string>",
"slug": "<string>",
"state": "<string>",
"url": "<string>",
"visibility": "<string>",
"backing_conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"max_persistent": 123,
"used": 1
}Authorizations
Personal Access Token. Send as Authorization: Bearer hq_pat_....
Response
Workspace app catalog
Show child attributes
Show child attributes
The apps quota - plan-driven (plan.max_apps) with a fallback to the
legacy tenants.max_persistent_surfaces - and how many non-destroyed
apps count against it. Drives the "N of M slots used" line.
x >= 0