API reference
Everything the editor can do, the API can do. The examples below are complete and can be pasted as they are.
Search the library by meaning. Returns the closest matches with a short description and the props each one takes.
curl https://api.beste.co/v1/sections?q=pricing+with+yearly+toggle \ -H "Authorization: Bearer $BESTE_KEY"
{
"results": [
{ "name": "pricing79", "title": "Three Plans Toggle", "score": 0.94 },
{ "name": "pricing83", "title": "Ink Comparison", "score": 0.89 }
]
}An API reference section: a serif headline that settles in word by word with a sliding-marker pill at the right end of the header, then a ruled list of endpoints on the left (method, path, a dot marker on the selected row) and on the right the chosen call's title, description and an ink code panel with a copyable request and its response, swapped with a soft blur.
An endpoint list beside a code panel: pick a call on the left and its description, request and response swap in on the right with a soft blur.
Upgrade to Pro
Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.
Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.
Radix flavor
npx shadcn add "https://ui.beste.co/r/devtools96?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/devtools96?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/devtools96.tsx plus the button22 sliding-marker pill and the text1 word stagger it uses.
The installed file exports devtools96Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { Devtools96, devtools96Demo } from "@/components/beste/block/devtools96";
export default function Page() {
return <Devtools96 {...devtools96Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Devtools96 } from "@/components/beste/block/devtools96";
export default function Page() {
return (
<Devtools96
eyebrow="API reference"
heading="Four calls, one small surface."
description="Everything the editor can do, the API can do."
buttons={[{ label: "Get an API key", href: "/keys", tone: "outline" }]}
labels={{ request: "Request", response: "Response", copy: "Copy request", copied: "Copied" }}
endpoints={[
{
method: "GET",
path: "/v1/sections",
title: "Search sections",
description: "Search the library by meaning.",
request: "curl https://api.example.com/v1/sections?q=pricing",
response: '{ "results": [] }',
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Small-caps line above the heading |
heading | string | – | Section heading, through Text1 |
description | string | – | Paragraph under the heading |
buttons | ActionButton[] | [] | Pill actions at the right end of the header |
labels | Labels | { request: "Request", response: "Response", copy: "Copy request", copied: "Copied" } | Wording of the panel labels and the copy button |
endpoints | Endpoint[] | [] | Calls in the list; the first is selected on load |
className | string | – | Extra classes for the outer <section> |
type Endpoint = {
method: "GET" | "POST" | "PUT" | "DELETE";
path: string;
title: string;
description: string;
request: string;
response: string;
};
type Labels = {
request: string;
response: string;
copy: string;
copied: string;
};
type ActionButton = {
label: string;
href: string;
tone?: "primary" | "light" | "dark" | "outline";
};pre inside an overflow-x-auto wrapper, so a long line scrolls within the panel rather than widening the page.AnimatePresence mode="wait", meaning the outgoing call finishes leaving before the next one arrives and the two never overlap.GET and DELETE leave the paths aligned down the list.aria-current and a dot that fades in, while hovering a row shows the same dot at partial opacity as a hint.devtools94
A developer section that lists common endpoints as hairline rows pairing tone-coded method chips with monospace paths, beside a dark code panel holding a full sample request and its response.
devtools95
A hairline list of every way to follow a publication, each row naming the feed, what it carries and its address, over a copyable one-line request that stands in for the whole API.
devtools1
Interactive REST API endpoint reference with method badges, expandable parameter details, and response types. Grouped by resource.
devtools7
API documentation cards showing response examples with color-coded status badges. Headers section, JSON body with copy button, success/error variants.