SDK catalog
GET /api/v1/sandbox/sdk
Read SDK classes, methods, properties, and built-in functions for editor integrations.
Access
A Bearer API key for this workspace is required; a read-only key is sufficient. The server also checks the owner’s permission for this resource and action. An inaccessible object is not disclosed.
Parameters
No request body is required. The optional language query accepts php, javascript, typescript, or python and defaults to php. Python returns its real synchronous snake_case catalog. JavaScript/TypeScript retain the compatible shared-method catalog.
Response fields: entry, classes, functions, and denied. Methods provide name, signature, returns, return_type, parameters, and summary. returns references another SDK class for chained completion. Parameters provide name, type, and optional; optional class properties provide name, type, and summary. Properties such as response.status are accessed without parentheses.
Python SDK · Context · Environment.
If you write scripts in the editor, use the SDK section for method explanations and examples. This endpoint only retrieves the catalog for an external integration. A method visible in an external program is not necessarily allowed inside the sandbox.
Python SDK catalog
curl --fail-with-body "$BASE/api/v1/sandbox/sdk?language=python" \
-H "Authorization: Bearer $API_KEY" \
-H "Accept: application/json"
Response 200
The example is shortened; actual responses may include more fields. Sample IDs are placeholders.
{
"classes": []
}
Send the request
Set BASE to your installation URL without a trailing slash and API_KEY to a secret stored on your server. Client setup and browser JavaScript.
curl
curl --fail-with-body -X GET "$BASE/api/v1/sandbox/sdk" \
-H "Authorization: Bearer $API_KEY" \
-H "Accept: application/json"
Node.js · server
// Node.js server example. Save as request.mjs.
const response = await fetch(process.env.BASE + "/api/v1/sandbox/sdk", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.API_KEY}`,
Accept: "application/json"
},
signal: AbortSignal.timeout(120000)
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
console.log(await response.json());
Python
import json
import os
import urllib.request
import urllib.error
request = urllib.request.Request(
os.environ["BASE"] + "/api/v1/sandbox/sdk",
method="GET",
headers={"Authorization": "Bearer " + os.environ["API_KEY"],
"Accept": "application/json"},
)
try:
with urllib.request.urlopen(request, timeout=120) as response:
print(json.load(response))
except urllib.error.HTTPError as error:
print(error.code, error.read().decode("utf-8", errors="replace"))
raise
PHP · external client
<?php
$handle = curl_init(getenv("BASE") . "/api/v1/sandbox/sdk");
curl_setopt_array($handle, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 120,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("API_KEY"),
"Accept: application/json",
],
]);
$content = curl_exec($handle);
$status = curl_getinfo($handle, CURLINFO_RESPONSE_CODE);
if ($content === false) {
throw new RuntimeException(curl_error($handle));
}
curl_close($handle);
if ($status < 200 || $status >= 300) {
throw new RuntimeException("HTTP $status: $content");
}
print_r(json_decode($content, true, 512, JSON_THROW_ON_ERROR));
Go
package main
import (
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
request, err := http.NewRequest("GET", os.Getenv("BASE") + "/api/v1/sandbox/sdk", nil)
if err != nil { panic(err) }
request.Header.Set("Authorization", "Bearer " + os.Getenv("API_KEY"))
request.Header.Set("Accept", "application/json")
client := &http.Client{Timeout: 120 * time.Second}
response, err := client.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
content, err := io.ReadAll(response.Body)
if err != nil { panic(err) }
if response.StatusCode < 200 || response.StatusCode >= 300 {
panic(fmt.Sprintf("HTTP %d: %s", response.StatusCode, content))
}
fmt.Println(string(content))
}
If the request fails
401: check the key and its expiry. 403: check permissions, read/write scope, and 2FA. 404: check the ID and workspace. 422: check fields and resource state. 429: respect Retry-After. Errors and retries.