curl --request GET \
--url https://api.widgetic.com/v1/widgets \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.widgetic.com/v1/widgets"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.widgetic.com/v1/widgets', 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.widgetic.com/v1/widgets",
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.widgetic.com/v1/widgets"
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.widgetic.com/v1/widgets")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.widgetic.com/v1/widgets")
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{
"success": true,
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"creatorId": "a4d8b6e9-3c2d-4a1f-8b9c-5e2d3f4a1b6c",
"name": "Chart Widget",
"description": "Interactive chart widget for data visualization",
"type": "chart",
"content": {
"chartType": "bar",
"dataSource": "api"
},
"isPublic": false,
"isDraft": true,
"shareId": "shwgt_7f1d34acf2",
"createdAt": "2025-09-15T10:23:00.000Z",
"updatedAt": "2025-09-16T08:12:45.000Z",
"jsPath": "/widgets/chart/main.js",
"canvasId": "9f0c6b54-3e8f-4a2a-8b7d-1c5c6d9e0a1b",
"repoId": "user/chart-widget",
"databaseId": "widget_3fa85f64_5717_4562_b3fc_2c963f66afa6",
"version": 1,
"lastCommitSha": "a1b2c3d4e5f6g7h8i9j0",
"organizationId": "5e2d3f4a-1b6c-4a1f-8b9c-3c2d4e5f6a7b",
"projectFolder": "marketing/q4-launch",
"workspaceType": "personal",
"managedUserId": "b7c8d9e0-1f2a-4b3c-8d4e-5f6a7b8c9d0e"
}
],
"meta": {
"page": 1,
"size": 20,
"total": 135,
"limit": 20,
"offset": 0,
"hasNextPage": true,
"hasPreviousPage": false,
"nextCursor": "<string>",
"warnings": [
"<string>"
]
}
}{
"success": false,
"message": "<string>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Composition not found",
"timestamp": "2026-10-15T10:00:00.000Z",
"param": "name",
"docUrl": "<string>",
"suggestedAction": "<string>",
"retryAfter": 60,
"details": {},
"correlationId": "req_123e4567-e89b-12d3-a456-426614174000"
}
}{
"success": false,
"message": "<string>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Composition not found",
"timestamp": "2026-10-15T10:00:00.000Z",
"param": "name",
"docUrl": "<string>",
"suggestedAction": "<string>",
"retryAfter": 60,
"details": {},
"correlationId": "req_123e4567-e89b-12d3-a456-426614174000"
}
}{
"success": false,
"message": "<string>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Composition not found",
"timestamp": "2026-10-15T10:00:00.000Z",
"param": "name",
"docUrl": "<string>",
"suggestedAction": "<string>",
"retryAfter": 60,
"details": {},
"correlationId": "req_123e4567-e89b-12d3-a456-426614174000"
}
}{
"success": false,
"message": "<string>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Composition not found",
"timestamp": "2026-10-15T10:00:00.000Z",
"param": "name",
"docUrl": "<string>",
"suggestedAction": "<string>",
"retryAfter": 60,
"details": {},
"correlationId": "req_123e4567-e89b-12d3-a456-426614174000"
}
}{
"success": false,
"message": "<string>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Composition not found",
"timestamp": "2026-10-15T10:00:00.000Z",
"param": "name",
"docUrl": "<string>",
"suggestedAction": "<string>",
"retryAfter": 60,
"details": {},
"correlationId": "req_123e4567-e89b-12d3-a456-426614174000"
}
}List Widgets
Lists the widgets your account owns, newest first. A widget is the reusable piece a composition is made from; this is your own library, not a catalogue of Widgetic’s widgets.
Pass page (counting from 1) and size (1 to 100, 20 when left out) to read the list one page at a time.
meta then carries total, hasNextPage and hasPreviousPage, so a client can walk the list to its end.
A page past the end is an empty list. Without page and size the call returns the whole list in one
response, which only suits an account with a few widgets.
Pass canvasId to list only the widgets on one of your canvases. That list is always returned whole,
whatever page and size say.
Pass managedUserId (Widgetic’s id for one of your managed users) or managedUserExternalId (your own
identifier for the user) to list only the widgets made for that managed user. The widgets of your other
managed users, and your own, are left out. It combines with page, size and canvasId. A managed user
that is not yours, or does not exist, is answered with 404 and MANAGED_USER_NOT_FOUND.
curl --request GET \
--url https://api.widgetic.com/v1/widgets \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.widgetic.com/v1/widgets"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.widgetic.com/v1/widgets', 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.widgetic.com/v1/widgets",
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.widgetic.com/v1/widgets"
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.widgetic.com/v1/widgets")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.widgetic.com/v1/widgets")
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{
"success": true,
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"creatorId": "a4d8b6e9-3c2d-4a1f-8b9c-5e2d3f4a1b6c",
"name": "Chart Widget",
"description": "Interactive chart widget for data visualization",
"type": "chart",
"content": {
"chartType": "bar",
"dataSource": "api"
},
"isPublic": false,
"isDraft": true,
"shareId": "shwgt_7f1d34acf2",
"createdAt": "2025-09-15T10:23:00.000Z",
"updatedAt": "2025-09-16T08:12:45.000Z",
"jsPath": "/widgets/chart/main.js",
"canvasId": "9f0c6b54-3e8f-4a2a-8b7d-1c5c6d9e0a1b",
"repoId": "user/chart-widget",
"databaseId": "widget_3fa85f64_5717_4562_b3fc_2c963f66afa6",
"version": 1,
"lastCommitSha": "a1b2c3d4e5f6g7h8i9j0",
"organizationId": "5e2d3f4a-1b6c-4a1f-8b9c-3c2d4e5f6a7b",
"projectFolder": "marketing/q4-launch",
"workspaceType": "personal",
"managedUserId": "b7c8d9e0-1f2a-4b3c-8d4e-5f6a7b8c9d0e"
}
],
"meta": {
"page": 1,
"size": 20,
"total": 135,
"limit": 20,
"offset": 0,
"hasNextPage": true,
"hasPreviousPage": false,
"nextCursor": "<string>",
"warnings": [
"<string>"
]
}
}{
"success": false,
"message": "<string>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Composition not found",
"timestamp": "2026-10-15T10:00:00.000Z",
"param": "name",
"docUrl": "<string>",
"suggestedAction": "<string>",
"retryAfter": 60,
"details": {},
"correlationId": "req_123e4567-e89b-12d3-a456-426614174000"
}
}{
"success": false,
"message": "<string>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Composition not found",
"timestamp": "2026-10-15T10:00:00.000Z",
"param": "name",
"docUrl": "<string>",
"suggestedAction": "<string>",
"retryAfter": 60,
"details": {},
"correlationId": "req_123e4567-e89b-12d3-a456-426614174000"
}
}{
"success": false,
"message": "<string>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Composition not found",
"timestamp": "2026-10-15T10:00:00.000Z",
"param": "name",
"docUrl": "<string>",
"suggestedAction": "<string>",
"retryAfter": 60,
"details": {},
"correlationId": "req_123e4567-e89b-12d3-a456-426614174000"
}
}{
"success": false,
"message": "<string>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Composition not found",
"timestamp": "2026-10-15T10:00:00.000Z",
"param": "name",
"docUrl": "<string>",
"suggestedAction": "<string>",
"retryAfter": 60,
"details": {},
"correlationId": "req_123e4567-e89b-12d3-a456-426614174000"
}
}{
"success": false,
"message": "<string>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Composition not found",
"timestamp": "2026-10-15T10:00:00.000Z",
"param": "name",
"docUrl": "<string>",
"suggestedAction": "<string>",
"retryAfter": 60,
"details": {},
"correlationId": "req_123e4567-e89b-12d3-a456-426614174000"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Page to return, counting from 1. Giving page or size turns paging on.
x >= 1How many widgets a page holds (20 when page is given without it). Giving page or size turns paging on.
1 <= x <= 100List only the widgets on this canvas. The list is returned whole.
List only the widgets made for this managed user (Widgetic's id for the user). Send this or managedUserExternalId, not both.
List only the widgets made for the managed user you registered with this externalId (your own identifier for the user). Send this or managedUserId, not both.
255