Code Example
The Code Example block renders a copy-pasteable request snippet for a single operation. It comes with a client picker (curl, Node, Python, and more) and, when the operation has multiple request examples, an example selector — exactly like the snippets in a full API reference.
The block mounts itself into a DOM element, so you do not need to set up Vue yourself.
Usage
import { createWorkspaceStore } from '@scalar/workspace-store/client'
import { createCodeExample } from '@scalar/blocks/code-example'
import '@scalar/blocks/style.css'
const store = createWorkspaceStore()
await store.addDocument({
name: 'default',
url: '/openapi.json',
})
const block = createCodeExample('#block', {
store,
path: '/users/{id}',
method: 'get',
})
// Later, when the block is no longer needed
block.destroy()
createCodeExample accepts either a CSS selector or an HTMLElement as its first argument. It throws if the element cannot be found, or if the path and method do not point at an operation in the store.
Options
| Option | Type | Description |
|---|---|---|
store |
WorkspaceStore |
Required. The workspace store that holds the OpenAPI document(s) to render from. |
path |
string |
Required. Path of the operation to render, e.g. /users/{id}. |
method |
HttpMethod |
Required. HTTP method of the operation to render. |
selectedClient |
AvailableClients[number] |
Pre-selected client ID, e.g. shell/curl. |
selectedServer |
ServerObject | null |
Server override used to build the example. When omitted, the server is derived from the active document (operation, then path item, then document level). Pass null to force "no server". |
selectedExample |
string |
Pre-selected example key for parameters and the request body. |
securitySchemes |
SecuritySchemeObjectSecret[] |
Security schemes applicable to the operation. |
darkMode |
boolean |
Force a color mode. When omitted, the block inherits the ambient theme of the host page. |
The store is the source of truth
The client and example selections round-trip through the store. Once a user picks a client or an example, that choice is written back to the store (x-scalar-default-client and x-scalar-default-example) and wins over the initial selectedClient / selectedExample seed.
This means selections survive re-renders and stay in sync across every block reading from the same store — pick a client in one block and the others follow.
Cleaning up
createCodeExample returns the underlying Vue app and a destroy function. Call destroy() to unsubscribe the block from the store and unmount it.
const block = createCodeExample('#block', { store, path: '/hello', method: 'post' })
block.destroy()