# Widgetic - [Introduction](https://widgetic.com/docs/introduction.md): Welcome to the Widgetic developer documentation - [Quickstart](https://widgetic.com/docs/quickstart.md): Get started with the Widgetic API in minutes - [Authentication](https://widgetic.com/docs/authentication.md): Learn how to authenticate with the Widgetic API - [Partner Overview](https://widgetic.com/docs/partners/overview.md): Build widgets for your customers with the Widgetic API and show them in your platform - [Account Status](https://widgetic.com/docs/partners/account-status.md): How a partner account is activated, what a pause or an unpaid invoice stops, and how it starts again - [Storage](https://widgetic.com/docs/partners/storage.md): The bucket your customers' files are kept in, how to set it up, and how to see what each customer keeps - [Managed Users](https://widgetic.com/docs/partners/managed-users.md): Keep a record of your platform's customers in Widgetic, and file what they make under them - [Editor Sessions](https://widgetic.com/docs/partners/editor-sessions.md): Let one of your customers use Widgetic's editors in your page, without your API key reaching the browser - [UI Components](https://widgetic.com/docs/partners/ui-components.md): Put Widgetic's File Browser, composition editor, widget creator and Workflows in your own page - [Brand Kit](https://widgetic.com/docs/partners/brand-kit.md): Give every widget your account makes your own colors, fonts, icons and corner radius, in place of Widgetic's default look - [Versions & Changelog](https://widgetic.com/docs/partners/module-versions.md): Pin the version of a piece, read what changed in each version, and upgrade when you choose - [Canvas Embedding](https://widgetic.com/docs/partners/canvas-embedding.md): Let your customers create and edit widgets with Widgetic's canvas and AI inside your platform - [Workflows](https://widgetic.com/docs/partners/workflows.md): Let your customers build paths of compositions in your page, and show them with one embed tag - [Credits & Billing](https://widgetic.com/docs/partners/credits-billing.md): How invoices, AI credits and storage work for a partner account - [Notifications](https://widgetic.com/docs/partners/notifications.md): What Widgetic tells you about your account, by email, in your dashboard and as signed calls to your own system - [Partner Dashboard](https://widgetic.com/docs/partners/dashboard.md): What you can see and do for your partner account on widgetic.com, and the API calls behind each screen - [API Overview](https://widgetic.com/docs/api/overview.md): Use the Widgetic API to manage your widgets and compositions - [Widgets](https://widgetic.com/docs/api/widgets.md): List, create and manage widgets via the API - [Compositions](https://widgetic.com/docs/api/compositions.md): A widget set up for one place, with its content, design and embed settings - [Canvases](https://widgetic.com/docs/api/canvases.md): Work with widget editing canvases - [AI agents (MCP)](https://widgetic.com/docs/agents/overview.md): Build, preview, publish and embed Widgetic widgets from ChatGPT, Codex, Cursor, Claude Code, VS Code and any other MCP client - [Connect your assistant](https://widgetic.com/docs/agents/connect.md): Add the Widgetic MCP server to ChatGPT, Codex, Cursor, Claude Code, VS Code or any MCP client - [Tools reference](https://widgetic.com/docs/agents/tools.md): The tools the Widgetic MCP server offers, what each does, what it costs and which permission it needs - [Authentication](https://widgetic.com/docs/agents/authentication.md): How an AI assistant signs in to Widgetic, which permissions it can hold, and how to revoke its access - [Command reference](https://widgetic.com/docs/cli/commands/index.md): Every command of the widgetic CLI: the REST API and the MCP tools, generated from the contracts it is built from. - [widgetic api brand-kit](https://widgetic.com/docs/cli/commands/api-brand-kit.md): 8 commands for the Brand Kit operations of the REST API, generated from its OpenAPI description. - [widgetic api canvases](https://widgetic.com/docs/cli/commands/api-canvases.md): 5 commands for the Canvases operations of the REST API, generated from its OpenAPI description. - [widgetic api compositions](https://widgetic.com/docs/cli/commands/api-compositions.md): 39 commands for the Compositions operations of the REST API, generated from its OpenAPI description. - [widgetic api credits](https://widgetic.com/docs/cli/commands/api-credits.md): 2 commands for the Credits operations of the REST API, generated from its OpenAPI description. - [widgetic api entitlements](https://widgetic.com/docs/cli/commands/api-entitlements.md): 2 commands for the Entitlements operations of the REST API, generated from its OpenAPI description. - [widgetic api invoices](https://widgetic.com/docs/cli/commands/api-invoices.md): 1 command for the Invoices operations of the REST API, generated from its OpenAPI description. - [widgetic api managed-users](https://widgetic.com/docs/cli/commands/api-managed-users.md): 18 commands for the Managed Users operations of the REST API, generated from its OpenAPI description. - [widgetic api operations](https://widgetic.com/docs/cli/commands/api-operations.md): 1 command for the Operations operations of the REST API, generated from its OpenAPI description. - [widgetic api partners](https://widgetic.com/docs/cli/commands/api-partners.md): 41 commands for the Partners operations of the REST API, generated from its OpenAPI description. - [widgetic api tokens](https://widgetic.com/docs/cli/commands/api-tokens.md): 1 command for the Tokens operations of the REST API, generated from its OpenAPI description. - [widgetic api uploads](https://widgetic.com/docs/cli/commands/api-uploads.md): 5 commands for the Uploads operations of the REST API, generated from its OpenAPI description. - [widgetic api users](https://widgetic.com/docs/cli/commands/api-users.md): 13 commands for the Users operations of the REST API, generated from its OpenAPI description. - [widgetic api widgets](https://widgetic.com/docs/cli/commands/api-widgets.md): 4 commands for the Widgets operations of the REST API, generated from its OpenAPI description. - [widgetic api workflows](https://widgetic.com/docs/cli/commands/api-workflows.md): 19 commands for the Workflows operations of the REST API, generated from its OpenAPI description. - [widgetic mcp](https://widgetic.com/docs/cli/commands/mcp.md): 48 commands for the tools of the MCP server, generated from its tool contract. - [Rate Limits](https://widgetic.com/docs/reference/rate-limits.md): Understanding rate limits in the Widgetic API - [Idempotency](https://widgetic.com/docs/reference/idempotency.md): Safely retry requests with idempotency keys - [API Reference Introduction](https://widgetic.com/api-reference/introduction.md): Complete reference for the Widgetic API - [Pagination](https://widgetic.com/api-reference/pagination.md): How pagination works in the Widgetic API - [Usage Limits](https://widgetic.com/api-reference/usage-limits.md): Rate limits and quotas for the Widgetic API - [Errors](https://widgetic.com/api-reference/errors.md): Error codes and handling in the Widgetic API - [Append a visitor entry through the gateway](https://widgetic.com/api-reference/public-embed/append-a-visitor-entry-through-the-gateway.md): Public append-only write into a published composition database. No API key. The browser must send a permitted `Origin` header: the artifact iframe origin, or any website when the owner has not restricted the allowed websites (when the owner has, one of the websites the owner listed, Widgetic's own s… - [Read the published Workflow of an embed](https://widgetic.com/api-reference/public-embed/read-the-published-workflow-of-an-embed.md): Public read of a workflow for the embed that carries `workflow-id`. No API key. The answer is the live version (its graph, the composition a new visitor starts on, the time zone, the languages its compositions can be shown in, and the token that lets the browser report counts), or `status: paused` w… - [Read one published version of a Workflow](https://widgetic.com/api-reference/public-embed/read-one-published-version-of-a-workflow.md): Public read of one version of a workflow, for a visitor who started on it before a newer one was published: they finish on the version they started on (for up to 30 days; after that they get the latest). The graph of a version never changes once published; the languages its compositions can be shown… - [Report what visitors did in a Workflow, as counts](https://widgetic.com/api-reference/public-embed/report-what-visitors-did-in-a-workflow-as-counts.md): Public report of counts for a workflow, sent by the embed. No API key. Each event is one id and a number: a visitor reached a block (`n`), took a connection (`e`), or could not be moved on (`f`). Nothing else is kept: no visitor, no value a visitor typed, no address. A batch carries at most 100 even… - [Show a published Workflow in a page of its own](https://widgetic.com/api-reference/public-embed/show-a-published-workflow-in-a-page-of-its-own.md): A page that runs a published workflow, for a place that can only be given an address or an iframe: a chat messenger, a link page, a site builder, a blog that follows oEmbed. No API key, no SDK to add. The page holds the Embed SDK and the same tag a website carries (` (copy)". For personal workspace, use 'personal' as workspaceId. For organization workspace, use the organization UUID as workspaceId. Any active member can duplicate. - [Publish the Draft of a Workflow](https://widgetic.com/api-reference/workflows/publish-the-draft-of-a-workflow.md): Checks the draft and, when nothing stops it, makes it the next version and the one new visitors get. Versions never change once published. A visitor already partway through keeps the version they started on (for up to 30 days). The check reads what each composition can do right now (a table the visi… - [Discard the Unpublished Changes of a Workflow](https://widgetic.com/api-reference/workflows/discard-the-unpublished-changes-of-a-workflow.md): Puts the draft back to the live version (its graph and its time zone). Only for a workflow that has been published; one that never was has no live version to go back to. Names the `revision` the editor read. For personal workspace, use 'personal' as workspaceId. For organization workspace, use the o… - [List the Published Versions of a Workflow](https://widgetic.com/api-reference/workflows/list-the-published-versions-of-a-workflow.md): Every version the workflow has had, newest first, with who published it and when. The one visitors get is marked `isLive`. For personal workspace, use 'personal' as workspaceId. For organization workspace, use the organization UUID as workspaceId. Any active member can read. - [Get a Published Version of a Workflow](https://widgetic.com/api-reference/workflows/get-a-published-version-of-a-workflow.md): One published version with its graph, for the read-only preview and for the Runs view. For personal workspace, use 'personal' as workspaceId. For organization workspace, use the organization UUID as workspaceId. Any active member can read. - [Restore a Version of a Workflow into the Draft](https://widgetic.com/api-reference/workflows/restore-a-version-of-a-workflow-into-the-draft.md): Copies a published version into the draft, so it can be changed and published again. Nothing is published and nothing visitors see changes: the version stays in the history as it was. Names the `revision` the editor read. For personal workspace, use 'personal' as workspaceId. For organization worksp… - [Pause a Workflow](https://widgetic.com/api-reference/workflows/pause-a-workflow.md): While a workflow is paused, its embeds show only their first composition (the `composition-id` of the embed) and no visitor moves on. The live version is kept, and visitors partway through carry on from where they were when it is resumed. Only a live workflow can be paused. For personal workspace, u… - [Resume a Paused Workflow](https://widgetic.com/api-reference/workflows/resume-a-paused-workflow.md): Makes a paused workflow live again, on the version that was live when it was paused. For personal workspace, use 'personal' as workspaceId. For organization workspace, use the organization UUID as workspaceId. Any active member can resume. - [Archive a Workflow](https://widgetic.com/api-reference/workflows/archive-a-workflow.md): Takes a workflow out of the default list and stops it serving: its embeds show only their first composition, as when paused. It is kept, with its versions and counts, until it is deleted. For personal workspace, use 'personal' as workspaceId. For organization workspace, use the organization UUID as… - [Unarchive a Workflow](https://widgetic.com/api-reference/workflows/unarchive-a-workflow.md): Brings an archived workflow back into the list: as paused when it was ever published (resume it to serve visitors again), as a draft when it never was. For personal workspace, use 'personal' as workspaceId. For organization workspace, use the organization UUID as workspaceId. Any active member can u… - [Get what Visitors Did in a Workflow](https://widgetic.com/api-reference/workflows/get-what-visitors-did-in-a-workflow.md): Counts per block and per connection over a range of UTC days (the last 30 days when not given, up to 366), for one version or for all of them. Only counts: how many visitors reached a block, took a connection, or could not be moved on, and, where the visitor's browser said why a block could not be s… - [List the workflows a partner offers as places to start](https://widgetic.com/api-reference/partners/list-the-workflows-a-partner-offers-as-places-to-start.md): The partner's starting points, ordered by `position` and then by `key`: the published workflows it offers its managed users when they make a new workflow. Each says whether people can start from it now and, when they cannot, why. The list is the same for every managed user, and a managed user is sho… - [Offer a workflow as a place to start, or replace what a key offers](https://widgetic.com/api-reference/partners/offer-a-workflow-as-a-place-to-start-or-replace-what-a-key-offers.md): Offers one of the partner account's own published workflows to its managed users under `key`. If the partner already offers something under that key it is replaced, so sending the same request twice is safe. Saving replaces the whole starting point: a `title`, `description` or `position` you leave o… - [Stop offering a workflow as a place to start](https://widgetic.com/api-reference/partners/stop-offering-a-workflow-as-a-place-to-start.md): Removes the starting point under `key`. The workflow itself is not touched, and neither are the workflows people already started from it. - [Find the partner you administer](https://widgetic.com/api-reference/partners/find-the-partner-you-administer.md): Returns the partner (nearly always one) that the signed-in account administers, with the id every other partner route asks for and the standing it is in: `active`, `inactive` (not activated yet), `suspended` (paused, with the reason Widgetic gave) or `payment_arrears` (a contract invoice is past its… - [Get partner credit balance](https://widgetic.com/api-reference/partners/get-partner-credit-balance.md): Returns the credits the partner has, and how much of that is reserved by operations that are still running. A partner has ONE account for its credits: the account of the person who administers it, the same account its API key acts as. There is nothing else to create or to fund. What its customers' e… - [Get partner credit transaction history](https://widgetic.com/api-reference/partners/get-partner-credit-transaction-history.md): Lists what happened to the partner's credits, newest first: the entries of the credit ledger of the account of the person who administers it, the one account a partner has for its credits. Every operation that spends credits is a `debit` entry, and the credits an invoice carried arrive as `credit` e… - [Buy extra credits for a partner](https://widgetic.com/api-reference/partners/buy-extra-credits-for-a-partner.md): Asks Widgetic for an invoice for extra credits, on top of the credits of the contract. Name the dollars; the invoice is for the most whole credits they buy at the **list price** of a credit (the price a contract may lower belongs to the contract), so it is never for more than you asked: 12.34 buys 1… - [Get comprehensive partner billing overview](https://widgetic.com/api-reference/partners/get-comprehensive-partner-billing-overview.md): Retrieves the partner's credits (`operationalCredits`), the partner's contract terms (`partnerCustomization`, the same fields as `getPartnerContract`) and billing integration status. Internal negotiation notes are not part of it. `operationalCredits` is the one account a partner has for its credits:… - [Get a partner's contract](https://widgetic.com/api-reference/partners/get-a-partners-contract.md): Returns the commercial terms agreed with the partner: price, included credits and storage, billing cycle, commitment, support level, and the dates the contract runs between. - [Get where a partner's uploaded files are stored](https://widgetic.com/api-reference/partners/get-where-a-partners-uploaded-files-are-stored.md): Returns the partner's storage destination without its secret: the endpoint, bucket, folder and public address, the last four characters of the access key id, when the destination last passed the check, and why the latest re-check failed if it did. Responds 404 while the partner has no destination, w… - [Set where a partner's uploaded files are stored](https://widgetic.com/api-reference/partners/set-where-a-partners-uploaded-files-are-stored.md): Points the partner at a bucket of its own on an S3-compatible service (Cloudflare R2, Amazon S3, Wasabi, MinIO and the like). From then on, every file the account that administers the partner stores is kept in that bucket instead of with Widgetic, whichever way it arrives: a file sent with `uploadFi… - [Stop storing a partner's uploaded files in its own bucket](https://widgetic.com/api-reference/partners/stop-storing-a-partners-uploaded-files-in-its-own-bucket.md): Removes the partner's storage destination. Partner storage is not optional, so after this every upload of the account, on any route, and the uploads of your customers' editor sessions are refused (409 `PARTNER_STORAGE_REQUIRED`) until a destination is set again, and no editor session can be made. Fi… - [Check that a partner's storage destination still works](https://widgetic.com/api-reference/partners/check-that-a-partners-storage-destination-still-works.md): Runs the same check as `setPartnerStorageDestination` against the destination already saved: a test file is written, read back from the public address and deleted. Use it after rotating a key or changing a bucket policy, or when uploads are failing with 502 or 503. - [List the widgets a partner offers as presets](https://widgetic.com/api-reference/partners/list-the-widgets-a-partner-offers-as-presets.md): Returns the partner's presets, ordered by `position` and then by `key`: the widgets it offers its managed users as starting points. The list is the same for every managed user. - [Make a widget a preset, or replace a preset](https://widgetic.com/api-reference/partners/make-a-widget-a-preset-or-replace-a-preset.md): Offers one of the partner's own widgets as a preset under `key`. If the partner already has a preset under that key it is replaced, so sending the same request twice is safe. Saving replaces the whole preset: a `title`, `description` or `position` you leave out goes back to its default. - [Take a widget off the partner's presets](https://widgetic.com/api-reference/partners/take-a-widget-off-the-partners-presets.md): Removes the preset under `key`. The widget itself is not touched, and neither are the copies and the compositions already made from it. - [Read partner-wide design defaults](https://widgetic.com/api-reference/partners/read-partner-wide-design-defaults.md) - [Set or clear partner-wide design defaults](https://widgetic.com/api-reference/partners/set-or-clear-partner-wide-design-defaults.md): Send `{ "design": { ... } }` or `{ "design": null }` to remove. New compositions merge this layer over the widget base and under each managed user's default and the request body. - [What a partner's customers store](https://widgetic.com/api-reference/partners/what-a-partners-customers-store.md): Says how many files, and how many bytes, your account keeps, in total and for each of your managed users, and how much of it is in Widgetic's storage and how much in your own storage destination (`setPartnerStorageDestination`). Use it to see which customers store the most, or to charge them for it. - [What was done with a partner's published widgets](https://widgetic.com/api-reference/partners/what-was-done-with-a-partners-published-widgets.md): Counts what the visitors of the compositions made through your account did in a period: how many times a composition was **viewed**, how many times a visitor **interacted** with one, and how many different visitors there were. It covers every composition of your account, your own and the ones made f… - [What each managed user's widgets did](https://widgetic.com/api-reference/partners/what-each-managed-users-widgets-did.md): Lists every one of your managed users with what their widgets and compositions did in a period: views, interactions and visitors, and how many widgets and compositions they have made. A managed user whose widgets were not viewed is listed too, with zeros. The most viewed come first, and `page.hasMor… - [Which widgets were viewed the most](https://widgetic.com/api-reference/partners/which-widgets-were-viewed-the-most.md): Lists the widgets whose compositions were viewed the most in a period, with their views, interactions, visitors and how many of their compositions were viewed. A widget that nobody viewed or used is not listed. The most viewed come first (then the most used), and at most `limit` are listed. Narrow i… - [What was done with a partner's widgets, day by day](https://widgetic.com/api-reference/partners/what-was-done-with-a-partners-widgets-day-by-day.md): Counts views, interactions and visitors for each day of a period (UTC days), oldest first, for a chart. Every day of the period is in the list, also one on which nothing happened (all zeros), so the list can be drawn as it is. Narrow it to one managed user with `managedUserId` or `managedUserExterna… - [What your partner account was told](https://widgetic.com/api-reference/partners/what-your-partner-account-was-told.md): Lists the notifications of a partner, the newest first: the invoices Widgetic issued and their payments, the reminders to pay them, a warning when your credits run low, and the changes to the standing of the account (activated, paused, resumed). It is the same list your dashboard shows, and each ent… - [How your notifications reached you](https://widgetic.com/api-reference/partners/how-your-notifications-reached-you.md): Lists the sends of your notifications, the newest first: each email to one address and each call to your webhook, with whether it was delivered, when it is tried again if not, how many attempts it had, and why the last one failed. Use it to find out why a webhook of yours did not receive an event. - [Where your notifications go](https://widgetic.com/api-reference/partners/where-your-notifications-go.md): Returns who gets the emails, which events you want by email and by webhook, the address of your webhook, and whether it has a secret to sign with. The secret itself is never returned: it is shown once, when it is made. `events` lists every kind of event there is, for a settings screen. - [Choose where your notifications go](https://widgetic.com/api-reference/partners/choose-where-your-notifications-go.md): Changes who gets the emails, which events you want by email and by webhook, and the address of your webhook. A key you leave out of the body is left as it was; send only what changes. - [Make a new secret for your webhook](https://widgetic.com/api-reference/partners/make-a-new-secret-for-your-webhook.md): Makes a new secret to sign your webhook with, and returns it in `webhookSecret`: **keep it now, it is shown once** and cannot be read again. Use it when the secret was lost, or may have leaked. - [Send a webhook delivery again](https://widgetic.com/api-reference/partners/send-a-webhook-delivery-again.md): Sends one earlier **webhook** delivery again to your **current** webhook address, with the same event `id` (`webhook-id`) as the original notification so a receiver that remembers ids can ignore a duplicate, and a new `createdAt` and signature made with your current secret. The attempt is recorded i… - [Send a test event to your webhook](https://widgetic.com/api-reference/partners/send-a-test-event-to-your-webhook.md): Sends ONE signed call, right now, to the webhook address you saved under notification settings, with a sample of what an event of the type you name carries, and answers how it went: whether your receiver answered with a 2xx status, which status, how long it took, and why not when it did not arrive.… - [See how the context of your embeds is signed](https://widgetic.com/api-reference/partners/see-how-the-context-of-your-embeds-is-signed.md): Says whether you have a secret to sign the `context` of your embeds with, when it was made, whether the secret it replaced is still accepted, and whether an entry without a valid signature is refused (`required`). The secret itself is never part of the answer: it is shown once, when it is made (`rot… - [Require a signed context, or stop requiring it](https://widgetic.com/api-reference/partners/require-a-signed-context-or-stop-requiring-it.md): Chooses what the gateway does with an entry whose `context` carries no valid signature. - [Make a secret to sign the context of your embeds](https://widgetic.com/api-reference/partners/make-a-secret-to-sign-the-context-of-your-embeds.md): Makes a secret to sign the `context` of your embeds with, and returns it in `secret`: **keep it now, it is shown once** and cannot be read again. Keep it on your server only: whoever holds it can write contexts your compositions accept. Call this again to make a new secret; the one it replaces is st… - [See the Neon database a partner keeps the data of its compositions in](https://widgetic.com/api-reference/partners/see-the-neon-database-a-partner-keeps-the-data-of-its-compositions-in.md): Returns the database set with `setPartnerDataDatabase`, without its password: the host, the database and the role, when it last passed the check, and why the latest re-check failed if it did. Responds 404 while the partner has no database of its own, which means the data of its compositions is kept… - [Keep the data of a partner's compositions in a Neon database of its own](https://widgetic.com/api-reference/partners/keep-the-data-of-a-partners-compositions-in-a-neon-database-of-its-own.md): Points the partner at a Neon database of its own. From then on, what visitors leave in the compositions of the partner's managed users, and of the compositions made in the partner's own account (the votes, ratings, answers and form submissions of the widgets that collect them), is stored in that dat… - [Stop keeping the data of a partner's compositions in its own database](https://widgetic.com/api-reference/partners/stop-keeping-the-data-of-a-partners-compositions-in-its-own-database.md): Removes the partner's database from Widgetic: Widgetic forgets the connection string, and from then on the data of the partner's compositions is kept in Widgetic's database again. Nothing in your database is deleted. - [Check that a partner's own database still works](https://widgetic.com/api-reference/partners/check-that-a-partners-own-database-still-works.md): Runs the same check as `setPartnerDataDatabase` against the database already saved: a schema is made in it, a table created, a row written and read back, and the schema removed again. Use it after changing the role's password or the project's settings in Neon, or when saving is failing with 503 `PAR… - [See which adapter keys a partner has connected](https://widgetic.com/api-reference/partners/see-which-adapter-keys-a-partner-has-connected.md): Widget adapters are capabilities a widget can use, and some of them act through a service the account that made the widget has with a provider: an adapter that sends email needs an email provider key, one that sends texts needs an SMS provider key. For the widgets of the customers a partner manages,… - [Connect an adapter key to a partner](https://widgetic.com/api-reference/partners/connect-an-adapter-key-to-a-partner.md): Gives an adapter the key it needs to act through a service the partner has an account with, for the widgets of the customers the partner manages. Take the `adapterId` and `credentialKey` from `getPartnerAdapterConnections`. Saving a key that is already connected replaces it. - [Remove an adapter key from a partner](https://widgetic.com/api-reference/partners/remove-an-adapter-key-from-a-partner.md): Removes a key an adapter was given. The adapter stops working for the widgets of the partner's customers that need it: their visitors are told the feature is unavailable. Nothing else of the widgets changes, and connecting a key again brings them back. - [Confirm a partner's adapter address with the code that was emailed to it](https://widgetic.com/api-reference/partners/confirm-a-partners-adapter-address-with-the-code-that-was-emailed-to-it.md): Some credentials are an email address Widgetic sends a widget's messages to (`confirmation: email_code` in `getPartnerAdapterConnections`). Saving one with `setPartnerAdapterConnection` emails a six-digit code to it; this gives the code back. Only then is the address used: until it is confirmed, the… - [List Widgets](https://widgetic.com/api-reference/widgets/list-widgets.md): 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. - [Create Widget](https://widgetic.com/api-reference/widgets/create-widget.md): Creates a widget for your account: a named record with a type and some starting content, on a canvas of its own (or one of yours that you name). It costs no credits and has no code yet; the code is generated for it afterwards. The new widget is yours, and you can list it with `getWidgets`. A widget… - [Create a composition for a widget in one call](https://widgetic.com/api-reference/widgets/create-a-composition-for-a-widget-in-one-call.md): After a managed user publishes a widget from the creator, call this with the widget id, the customer's managed user (when the widget is not already filed under one), and optional content, design, embed settings and locale. Every input is validated before a single insert; a failure never leaves a hal… - [Get Widgets Batch](https://widgetic.com/api-reference/widgets/get-widgets-batch.md): Retrieves multiple widgets by their IDs in a single request. An id that is not found, or that is not yours, is reported in `errors` exactly like one that does not exist. Called with an editor session, only the widgets made for the session's managed user are returned. - [List the websites allowed to show your widgets](https://widgetic.com/api-reference/users/list-the-websites-allowed-to-show-your-widgets.md): Lists the websites on an account's own list, newest first. It is the list Widgetic checks when a widget of the account is embedded: when it holds at least one website, the widget is shown on those websites (and on Widgetic's own) and nowhere else; when it is empty, the widget can be shown anywhere.… - [Allow a website to show your widgets](https://widgetic.com/api-reference/users/allow-a-website-to-show-your-widgets.md): Adds a website to an account's own list. Give a website name such as `example.com`, or `*.example.com` for a website and all of its subdomains. A scheme, a port, a path, capital letters and a leading `www.` are dropped, so `https://www.Example.com/shop` is kept as `example.com`, and `example.com` co… - [Change a website on your list](https://widgetic.com/api-reference/users/change-a-website-on-your-list.md): Replaces the website of one entry on an account's own list. The same rules apply as when adding one (`addPersonalWorkspaceDomain`): a website name such as `example.com` or `*.example.com`, kept in its cleaned form, and refused when it is not a website name or is already on the list. - [Stop allowing a website to show your widgets](https://widgetic.com/api-reference/users/stop-allowing-a-website-to-show-your-widgets.md): Removes one entry from an account's own list. When it was the last one, nothing is restricted any more and a widget can be shown anywhere again. A change can take about 15 seconds to reach every server. - [List the API keys of an account](https://widgetic.com/api-reference/users/list-the-api-keys-of-an-account.md): Lists the API keys of an account, in the order they were made: name, the first characters of the key, when it was made, when it expires, when it was last used, whether it is switched on and what it is limited to (`scopes` and `preset`). The secret of a key is never part of the list. A caller can lis… - [Create an API key](https://widgetic.com/api-reference/users/create-an-api-key.md): Makes a new API key for an account and returns its secret in `key`. That is the only time the secret is shown: Widgetic keeps a hash, so a key that was not stored cannot be recovered, only replaced. To rotate a key, make the new one, switch the integration over to it, then delete the old one. Only a… - [Rename an API key, or switch it off or on](https://widgetic.com/api-reference/users/rename-an-api-key-or-switch-it-off-or-on.md): Renames a key, or switches it off (`isActive: false`) or back on. A key that is switched off is refused at once by the server that took the request and within a minute by the others, and can be switched on again; deleting is for a key that is not coming back. The secret, the expiry and the scopes of… - [Delete an API key](https://widgetic.com/api-reference/users/delete-an-api-key.md): Deletes a key and the record of what it was used for. The key stops working at once on the server that took the request and within a minute on the others, and cannot be brought back: make a new one instead. To stop a key without losing it, switch it off with `updateUserApiKey`. - [Read what an API key was used for](https://widgetic.com/api-reference/users/read-what-an-api-key-was-used-for.md): Lists the calls made with one key, newest first: when, which path and method, and the status each ended with. Use it to see whether a key is still in use before deleting it, or to see what a key that should not be in use has been doing. - [See which adapter keys an account has connected](https://widgetic.com/api-reference/users/see-which-adapter-keys-an-account-has-connected.md): Widget adapters are capabilities a widget can use, and some of them act through a service the owner has an account with: an adapter that sends email needs the owner's email provider key, one that sends texts needs the owner's SMS provider key. This lists every key an adapter takes from an owner and… - [Connect an adapter key to an account](https://widgetic.com/api-reference/users/connect-an-adapter-key-to-an-account.md): Gives an adapter the key it needs to act through a service you have an account with, for the widgets you made. Take the `adapterId` and `credentialKey` from `getUserAdapterConnections`. Saving a key that is already connected replaces it. - [Remove an adapter key from an account](https://widgetic.com/api-reference/users/remove-an-adapter-key-from-an-account.md): Removes a key an adapter was given. The adapter stops working for the widgets that need it: their visitors are told the feature is unavailable. Nothing else of the widgets changes, and connecting a key again brings them back. - [Confirm an adapter address with the code that was emailed to it](https://widgetic.com/api-reference/users/confirm-an-adapter-address-with-the-code-that-was-emailed-to-it.md): Some credentials are an email address Widgetic sends a widget's messages to (`confirmation: email_code` in `getUserAdapterConnections`). Saving one with `setUserAdapterConnection` emails a six-digit code to it; this gives the code back. Only then is the address used: until it is confirmed, the widge… - [List the account's uploads](https://widgetic.com/api-reference/uploads/list-the-accounts-uploads.md): The files the account has uploaded, newest first. Deleted files are not listed. Returns at most `limit` files and has no further pages: a client that needs more narrows the list instead, for example to one managed user's files with `managedUserId` or `managedUserExternalId`. The files that visitors… - [Upload a file](https://widgetic.com/api-reference/uploads/upload-a-file.md): Stores one file for the account and returns its public address. This is how a user's own images, video and PDFs reach a widget's content. - [Upload size limits and accepted file types](https://widgetic.com/api-reference/uploads/upload-size-limits-and-accepted-file-types.md): The size limit and the accepted file types of the upload endpoints. Read them from here rather than hard-coding thresholds: they are configuration and can change. The limits are the same for every account, whatever its plan: `multipart_max_bytes` for a file sent in one request (10 MB) and `tus_max_b… - [Get an upload by id](https://widgetic.com/api-reference/uploads/get-an-upload-by-id.md): The details of one of the account's uploads. An upload that belongs to another account is not found. - [Delete an upload](https://widgetic.com/api-reference/uploads/delete-an-upload.md): Removes the stored file and the upload row. A file in Widgetic's own storage gives back the space it took from your storage allowance; a file in your own bucket is removed from your bucket. Deleting an upload that is already gone succeeds the same way as the first delete. An upload that belongs to a… - [Validate current authentication token](https://widgetic.com/api-reference/tokens/validate-current-authentication-token.md): Describes the credential the request was made with: how it signs in (`tokenType`), what it may do (`scopes`) and the account it belongs to (`userId`). A credential that belongs to the platform itself, and not to a customer's account, is held to no scope: it is answered with `tokenType` `service_key`… - [Get operation status](https://widgetic.com/api-reference/operations/get-operation-status.md): Follows work that carries on after the response that started it. Duplicating a composition, for one, answers 202 with an `operationId`: ask for that operation until its `status` is `completed` (or `failed`, with the reason in `error`). A finished duplication names the new composition in `metadata.ne… - [Get Managed Users](https://widgetic.com/api-reference/managed-users/get-managed-users.md): Retrieve the managed users you manage, with pagination support. (Admins see every partner's managed users.) - [Create Managed User](https://widgetic.com/api-reference/managed-users/create-managed-user.md): Creates a new managed user for a partner account. - [Get Managed Users By Manager](https://widgetic.com/api-reference/managed-users/get-managed-users-by-manager.md): Retrieve managed users for a specific manager with pagination support. - [Get Managed User By ID](https://widgetic.com/api-reference/managed-users/get-managed-user-by-id.md): Retrieves a specific managed user by ID. - [Update Managed User](https://widgetic.com/api-reference/managed-users/update-managed-user.md): Updates an existing managed user. Only `externalId`, `metadata` and `isActive` can change, and `metadata` is replaced as a whole, so send all of it. `isActive: false` switches the managed user off: what it already has stays, and nothing new can be filed under it until you send `isActive: true`. Swit… - [Delete Managed User](https://widgetic.com/api-reference/managed-users/delete-managed-user.md): Deletes a managed user by ID. Its editor sessions end with it. What was filed under it (compositions, widgets, uploads) stays in your account, untagged. - [Create an editor session for a managed user](https://widgetic.com/api-reference/managed-users/create-an-editor-session-for-a-managed-user.md): Makes a short-lived credential that lets the browser of ONE of your managed users use Widgetic's editor pieces, such as the File Browser and the composition editor, without your API key ever reaching that browser. Call this from your server when the page that hosts the editor opens, and hand the `to… - [End every editor session of a managed user](https://widgetic.com/api-reference/managed-users/end-every-editor-session-of-a-managed-user.md): Ends all of the managed user's live editor sessions at once, for example when the user signs out of your platform. Their tokens stop working on the next request (on another server of ours, within a few seconds). It is fine to call it for a user who has none. - [End one editor session of a managed user](https://widgetic.com/api-reference/managed-users/end-one-editor-session-of-a-managed-user.md): Ends the session at once: its token stops working on the next request (on another server of ours, within a few seconds). Ending a session that has already ended is fine. - [What a managed user's editor sessions spent](https://widgetic.com/api-reference/managed-users/what-a-managed-users-editor-sessions-spent.md): Says how many credits the editor sessions of one of your managed users took from your account over a period, in total and for each operation. A generation costs one credit, taken from your account when it starts; one that fails is refunded and is counted as refunded, not as spent. - [Give a managed user a copy of one of your presets](https://widgetic.com/api-reference/managed-users/give-a-managed-user-a-copy-of-one-of-your-presets.md): Copies the preset `key` (see `setPartnerPreset`) onto a new canvas for one of your managed users, so their widget creator opens on a widget of their own that starts from yours. The copy is a draft widget in your account, filed under the managed user: `getAllWidgets` with `managedUserId` lists it, an… - [Create a composition from one of your presets in one call](https://widgetic.com/api-reference/managed-users/create-a-composition-from-one-of-your-presets-in-one-call.md): Validates the name, optional content, design, embed settings and locale, then creates a draft composition filed under the managed user, built on the preset's widget, in a single insert. A failure never leaves a half-made composition. - [Read monthly credit cap and usage for one managed user](https://widgetic.com/api-reference/managed-users/read-monthly-credit-cap-and-usage-for-one-managed-user.md) - [Set or clear the monthly credit cap for one managed user](https://widgetic.com/api-reference/managed-users/set-or-clear-the-monthly-credit-cap-for-one-managed-user.md): Send monthlyCredits as a whole number from 0 up to 2147483647 to cap what this customer's editor sessions may spend in a UTC calendar month, or null to remove the cap. The cap counts the credits the customer's sessions spent that month (refunded credits do not count) and applies to all of the custom… - [Storage used by one managed user's uploads](https://widgetic.com/api-reference/managed-users/storage-used-by-one-managed-users-uploads.md) - [List entries across a managed user's compositions](https://widgetic.com/api-reference/managed-users/list-entries-across-a-managed-users-compositions.md): Merges eligible tables (time and id columns) across the managed user's compositions in global time order, then compositionId, table, and id (byte order). Only tables with both a time and an id column take part. Rate limit 30 requests per minute. - [Read design defaults for one managed user](https://widgetic.com/api-reference/managed-users/read-design-defaults-for-one-managed-user.md) - [Set or clear design defaults for one managed user](https://widgetic.com/api-reference/managed-users/set-or-clear-design-defaults-for-one-managed-user.md): Send `{ "design": { ... } }` to store a JSON object (at most 64 KB, nesting depth 32), or `{ "design": null }` to remove the override. New compositions for this customer merge this layer over the partner default and under the request body. - [List a partner's invoices](https://widgetic.com/api-reference/invoices/list-a-partners-invoices.md): Lists the invoices issued to a partner, newest first. Each carries the price (`subtotal`), the tax on it (`taxAmount`) and what is paid (`total`), its status as the payment provider reports it, why the last payment failed (`failureReason`), and the page where it is paid (`hostedInvoiceUrl`). - [Get partner entitlements](https://widgetic.com/api-reference/entitlements/get-partner-entitlements.md): Retrieves all entitlements for a partner (admin or partner access). - [Get managed user entitlements](https://widgetic.com/api-reference/entitlements/get-managed-user-entitlements.md): Retrieves all entitlements for a managed user (admin or partner access). - [Get an account's credit balance](https://widgetic.com/api-reference/credits/get-an-accounts-credit-balance.md): Returns the credits an account holds: the balance, and how much of it is reserved by operations that are still running. - [List an account's credit ledger](https://widgetic.com/api-reference/credits/list-an-accounts-credit-ledger.md): Lists the entries of an account's credit ledger, newest first. This is also how an account's usage is read: every operation that spends credits is a `debit` entry, so summing the `debit` entries over a period gives the credits consumed in it, and the other types give what was added. - [Get All Compositions](https://widgetic.com/api-reference/compositions/get-all-compositions.md): Retrieves all compositions with pagination support. - [Create Composition](https://widgetic.com/api-reference/compositions/create-composition.md): Creates a new composition. - [Duplicate Composition](https://widgetic.com/api-reference/compositions/duplicate-composition.md): Creates a duplicate of an existing composition for the authenticated user. - [Get Composition Versions](https://widgetic.com/api-reference/compositions/get-composition-versions.md): Retrieves version history for a specific composition. - [Update Composition Status](https://widgetic.com/api-reference/compositions/update-composition-status.md): Updates the status of a specific composition. - [Get Composition](https://widgetic.com/api-reference/compositions/get-composition.md): Retrieves a specific composition by its ID. - [Update Composition](https://widgetic.com/api-reference/compositions/update-composition.md): Updates a specific composition. - [Delete Composition](https://widgetic.com/api-reference/compositions/delete-composition.md): Deletes a specific composition, and the data it keeps (the tables it declared and what visitors left in them). - [Get Composition Design](https://widgetic.com/api-reference/compositions/get-composition-design.md): Retrieves only the design field from a composition. - [Get Current Content](https://widgetic.com/api-reference/compositions/get-current-content.md): Retrieves the current content of a composition - [Set Dynamic Content](https://widgetic.com/api-reference/compositions/set-dynamic-content.md): Updates the content of a composition dynamically with optional schema validation. - [Get Composition Embed Settings](https://widgetic.com/api-reference/compositions/get-composition-embed-settings.md): Retrieves only the embedSettings field from a composition. - [Get Composition Preview](https://widgetic.com/api-reference/compositions/get-composition-preview.md): Returns the address of the page an editor shows the composition in: the page of the widget's published version on the CDN, with the widget and version it is. Load it in a frame, then send the frame what to show (the content, design and embed settings you read from the composition, and every change t… - [Get All Records From Composition Database Table](https://widgetic.com/api-reference/compositions/get-all-records-from-composition-database-table.md): Retrieves all records from one of the composition's tables. Only the composition's own tables (made from its `databaseSchema` or from the tables its widget declares) can be reached; any other table name answers `404`. - [Create Record In Composition Database](https://widgetic.com/api-reference/compositions/create-record-in-composition-database.md): Creates a new record in one of the composition's tables. Only the composition's own tables (made from its `databaseSchema` or from the tables its widget declares) can be reached; any other table name answers `404`. - [Get Record From Composition Database](https://widgetic.com/api-reference/compositions/get-record-from-composition-database.md): Retrieves a specific record from one of the composition's tables. Only the composition's own tables (made from its `databaseSchema` or from the tables its widget declares) can be reached; any other table name answers `404`. - [Update Record In Composition Database](https://widgetic.com/api-reference/compositions/update-record-in-composition-database.md): Updates a specific record in one of the composition's tables. Only the composition's own tables (made from its `databaseSchema` or from the tables its widget declares) can be reached; any other table name answers `404`. - [Delete Record From Composition Database](https://widgetic.com/api-reference/compositions/delete-record-from-composition-database.md): Deletes a specific record from one of the composition's tables. Only the composition's own tables (made from its `databaseSchema` or from the tables its widget declares) can be reached; any other table name answers `404`. - [Describe What a Composition Keeps](https://widgetic.com/api-reference/compositions/describe-what-a-composition-keeps.md): Names the tables a composition's widget keeps entries in (the votes, ratings, answers or sign-ups its visitors left), their columns, and how many entries each holds. Call it first to learn the table and column names that `readCompositionEntries` takes. - [Read the Entries of a Composition's Table](https://widgetic.com/api-reference/compositions/read-the-entries-of-a-compositions-table.md): Counts the entries visitors left in one table, tallies them per value of a column on request, and returns the newest entries only when asked to. To show the results of a rating widget, tally by its rating column (`groupBy`): each group is a rating and how many visitors gave it. The average is then `… - [Add a content list item](https://widgetic.com/api-reference/compositions/add-a-content-list-item.md): Creates one item in a widget content list without replacing the whole list. Item field keys are widget data (camelCase or snake_case are kept as sent). Partners use this to keep galleries in sync. - [Delete a content list item](https://widgetic.com/api-reference/compositions/delete-a-content-list-item.md) - [Update a content list item](https://widgetic.com/api-reference/compositions/update-a-content-list-item.md) - [Read the composition data source binding](https://widgetic.com/api-reference/compositions/read-the-composition-data-source-binding.md): The data source that is bound to the composition: `url` and `refreshSeconds`. The answer's `data` is `null` when none is bound, and also when what is stored does not pass the rule for a public https address (a binding written by another path, such as the general embed-settings update, is never shown… - [Bind a public JSON data source for embed refresh](https://widgetic.com/api-reference/compositions/bind-a-public-json-data-source-for-embed-refresh.md): Stores an https URL the widget runtime may read on load and every `refreshSeconds`. The URL must name a public host (no loopback, link-local or metadata addresses). A composition has one binding: saving another replaces it. The answer is the binding as it was saved (`url`, `refreshSeconds`). - [Remove the composition data source binding](https://widgetic.com/api-reference/compositions/remove-the-composition-data-source-binding.md): Removes the binding. Asking again, or asking for a composition that had none, is not an error: the composition has no data source afterwards, and that is all `removed: true` says. - [Validate Content](https://widgetic.com/api-reference/compositions/validate-content.md): Checks content against the composition's widget schema without saving it. Send what a content update (`PUT /compositions/{id}/content`) would store, `{ "design": {...}, "content": {...} }`, or the widget's values alone. Each value is checked by the kind of field the widget declares for it: text, a n… - [Get Content Schema](https://widgetic.com/api-reference/compositions/get-content-schema.md): Retrieves the content schema for a composition based on its widget type - [Get Design Schema](https://widgetic.com/api-reference/compositions/get-design-schema.md): Retrieves the design schema for a composition based on its widget type - [Get Embed Schema](https://widgetic.com/api-reference/compositions/get-embed-schema.md): Retrieves the definition of the composition's Embed tab: which settings exist, what each one holds, what it defaults to, and when its control is shown. It is the third tab beside `schema/content` and `schema/design`, in the same format (`componentGroups` → `components` → `propertyGroups` → `properti… - [Check Composition Access](https://widgetic.com/api-reference/compositions/check-composition-access.md): Checks if the authenticated user can access a specific composition based on workspace context and permissions. - [Get Compositions Batch](https://widgetic.com/api-reference/compositions/get-compositions-batch.md): Retrieves multiple compositions by their IDs in a single request. This endpoint includes domain validation for embed contexts and is used by the embed SDK. - [List composition entry items with paging and filters](https://widgetic.com/api-reference/compositions/list-composition-entry-items-with-paging-and-filters.md): Reads one widget table with cursor paging (time then id in byte order), optional since/until on the time column, and up to five context filters plus ten column filters. Rate limit 120 requests per minute. Each read batch uses a 5 s statement timeout. - [Delete composition entry items by id or host context](https://widgetic.com/api-reference/compositions/delete-composition-entry-items-by-id-or-host-context.md): Delete by comma-separated ids (1–100) or by context filters (not both). Rate limit 30 requests per minute. - [Export composition entry items](https://widgetic.com/api-reference/compositions/export-composition-entry-items.md): Streams up to 50,000 matching rows in batches of 1,000. Tables without cursor paging export at most one batch; when more rows exist the response sets `X-Widgetic-Export-Truncated: true`. Rate limit 20 requests per minute. - [See the documents a widget's AI answers from](https://widgetic.com/api-reference/compositions/see-the-documents-a-widgets-ai-answers-from.md): The `ai-answers` adapter lets a widget answer a visitor's question with text an AI model writes from documents the widget's owner provides. This lists those documents, and how much room is left for more: `totals` carries the widget's limits next to what it uses. - [Add a document for a widget's AI to answer from](https://widgetic.com/api-reference/compositions/add-a-document-for-a-widgets-ai-to-answer-from.md): Gives the widget's AI a document to answer visitors' questions from. Send the title and the plain text. The call returns once the document is ready to be used, which takes a few seconds, longer for a long text. - [Add a text file or a picture of a document (a PDF once PDFs are read) for a widget's AI to answer from](https://widgetic.com/api-reference/compositions/add-a-text-file-or-a-picture-of-a-document-a-pdf-once-pdfs-are-read-for-a-widgets-ai-to-answer-from.md): Gives the widget's AI a document made from a file. Send a `multipart/form-data` request with the file in the field named `file` and, if you like, a `title`. The file is turned into text and then added exactly as `addAiAnswersKnowledgeDocument` adds text: the same cleaning, the same limits, the same… - [Remove a document from a widget's knowledge base](https://widgetic.com/api-reference/compositions/remove-a-document-from-a-widgets-knowledge-base.md): Removes one document and its passages: the widget's AI stops answering from it at once. Take the `documentId` from `getAiAnswersKnowledge`. - [Get All Canvases](https://widgetic.com/api-reference/canvases/get-all-canvases.md): Retrieves all canvases with pagination support and filtering options. - [Create Canvas](https://widgetic.com/api-reference/canvases/create-canvas.md): Creates a new canvas with the specified properties. - [Get Canvas](https://widgetic.com/api-reference/canvases/get-canvas.md): Retrieves a specific canvas by ID. - [Update Canvas](https://widgetic.com/api-reference/canvases/update-canvas.md): Updates an existing canvas with the specified properties. - [Delete Canvas](https://widgetic.com/api-reference/canvases/delete-canvas.md): Deletes a canvas together with every widget on it. - [The Brand Kit of the current workspace](https://widgetic.com/api-reference/brand-kit/the-brand-kit-of-the-current-workspace.md): The colors, fonts, icons, corner radius and style notes every widget made by this account is generated with. An account that never saved a kit gets Widgetic's default one (`isDefault` is true). A partner account's kit is the default for everything its keys create, and a key reads and changes the kit… - [Save Brand Kit tokens](https://widgetic.com/api-reference/brand-kit/save-brand-kit-tokens.md): Replaces the colors, fonts, spacing and notes of the kit with the ones sent. To change one thing, use PATCH. - [Reset the Brand Kit to the default](https://widgetic.com/api-reference/brand-kit/reset-the-brand-kit-to-the-default.md) - [Change part of the Brand Kit](https://widgetic.com/api-reference/brand-kit/change-part-of-the-brand-kit.md): Changes only what is sent: the colors, a font role, a spacing step, one corner radius (0 for square corners) or the style notes, and keeps the rest of the saved kit. An account that never saved a kit starts from Widgetic's default one. The response lists what is worth fixing in `warnings`. - [Upload a font file to the Brand Kit](https://widgetic.com/api-reference/brand-kit/upload-a-font-file-to-the-brand-kit.md) - [Add a named SVG icon to the Brand Kit](https://widgetic.com/api-reference/brand-kit/add-a-named-svg-icon-to-the-brand-kit.md) - [Remove a font or icon from the Brand Kit](https://widgetic.com/api-reference/brand-kit/remove-a-font-or-icon-from-the-brand-kit.md) - [Rename an icon or relabel a font variant](https://widgetic.com/api-reference/brand-kit/rename-an-icon-or-relabel-a-font-variant.md) - [Code Examples](https://widgetic.com/resources/examples.md): Example code for common Widgetic integrations - [SDKs](https://widgetic.com/resources/sdks.md): Official Widgetic SDKs and libraries - [Security](https://widgetic.com/resources/security.md): Security best practices for Widgetic integrations - [Integrations](https://widgetic.com/resources/integrations.md): Integrate Widgetic with other platforms - [Widgetic Integration License](https://widgetic.com/resources/license.md): The license of every Widgetic package. Use it to integrate Widgetic, and for nothing else ## OpenAPI Specs - [widgetic-api-public](/openapi/widgetic-api-public.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.