Introduction
TheAPI primitive lets you define REST endpoints using XanoScript.
Each API corresponds to an endpoint you could create in Xano’s visual builder — but expressed in code.
APIs will typically:
- Declare their name and HTTP verb
- Accept inputs
- Run one or more operations in a stack
- Return a response
Anatomy
Every XanoScript API follows a predictable structure. Here’s a quick visual overview of its main building blocks — from declaration at the top to settings at the bottom.You can find more detail about each section by continuing below.
Declaration
Every API starts with a declarative header that specifies its type, name, and HTTP verb.XanoScript
Section 1: Inputs
Theinput block defines the data that will be sent to the API. You can declare types, optionality, and filters:
Hover over this image to see the XanoScript version
- Declare its type (
text,email,password, etc.) - Mark it as optional (
?) - Apply filters (
filters=trim|lower) - Hide the input (when using Database Link) — The example shown below uses database link from a
producttable, but hides theupdated_atanddescriptionfields in the inputs section. To unhide the input, just remove the correspondingoverridestatement.
Learn more about the available input types
Section 2: Stack
Thestack block contains the actual logic that will be executed when the API is called.
Hover over this image to see the XanoScript version
Each block inside stack corresponds to a function available in Xano’s visual builder:
db.get— Fetch a record from the databaseprecondition— Guard execution with a conditiondb.add— Insert a new record into the databasesecurity.create_auth_token— Generate an authentication token
Review all available functions and their XanoScript in the function reference
Section 3: Response
Theresponse block defines what data your API returns:
Hover over this image to see the XanoScript version
- The
valueassignment determines the JSON returned to the client. - Variables captured in the stack (e.g.,
$authToken) can be returned here.
Settings
API primitives support several optional settings that control authentication, tagging, caching, and version history. These settings are defined at the root level of the API block, after the input, stack, and response blocks. They affect how the endpoint behaves, how it’s documented, and how responses are cached.The
cache block configures caching behavior for the API:Detailed Example
Below, you’ll see a complete example of a typical signup API endpoint.XanoScript
What’s Next
Now that you understand how to define APIs in XanoScript, here are a few great next steps:Explore the function reference
Learn about the built-in functions available in the stack to start writing more complex logic.
Try it out in VS Code
Use the XanoScript VS Code extension with Copilot to write XanoScript in your favorite IDE.
Learn about Custom Functions
They work just like APIs, but let you create reusable logic, and are a great next step when learning XanoScript.