Product
Jentic OSThe workplace. An in-house AI platform for every employeeJentic OneSafe access. Agents reach your systems without holding keysJentic AIRThe foundation. Gets your existing platforms ready for AI
Pricing
Developers

GET STARTED

API DirectoryBrowse 10,000+ APIs Ready For AI Agent IntegrationDocumentationGuides and API reference

TOOLS

API ScoringCheck your AI Readiness using our scorecardArazzo UIVisualize Arazzo Workflows As Interactive DocumentationArazzo EditorBuild And Edit Multi-Step API Workflows Visually

COMMUNITY

GitHubOpen source projects and examplesOpen StandardsBuilt on open specs. Never locked in.
Resources
Company
About UsOur mission and teamCareersJoin our teamContactGet in touch
Try it now
Jentic OSJentic OneJentic AIR
Pricing
API DirectoryDocumentationAPI ScoringArazzo UIArazzo EditorGitHubOpen Standards
Resources
About UsCareersContact
Try it now
JenticJentic
Products
  • Jentic OS
  • Jentic One
  • Jentic AIR
For Developers
  • API Directory
  • Documentation
  • GitHub
Company
  • About Jentic
  • Careers
  • Contact Us
  • Trust Centre
ISO/IEC 27001:2022 certification badge issued by Prescient SecurityISO/IEC 27001:2022 certification badge issued by Prescient Security

Information Security Management System

Certified to ISO/IEC 27001:2022 by Prescient Security

Terms & Conditions•Privacy Policy•
© 2026 Jentic Technology Ltd. All rights reserved.
Switch to light modeSwitch to dark mode
APIs / Developer Tools / Anvil Works API
Anvil Works API logo

Anvil Works API

Agent-ready OpenAPI document · curated by JenticDeveloper ToolsCi Cdbearer5 EndpointsREST

Know of an official OpenAPI document? Contribute it →

For Agents

Call Python server functions, query data table rows, and hit HTTP endpoints in any deployed Anvil app using a per-app bearer token.

Use for: I need to call an Anvil server function from my agent, I want to read rows from an Anvil data table, Insert a new row into an Anvil data table, Check whether an Anvil app is online and which runtime version it uses

Not supported: Does not handle UI rendering, app deployment, or user authentication flows - use for invoking server functions, data table rows, and custom HTTP endpoints in already-deployed Anvil apps only.

Jentic publishes the only available OpenAPI specification for Anvil Works API, keeping it validated and agent-ready. Anvil is a platform for building full-stack web applications in Python, and its HTTP API exposes server functions, data tables, and HTTP endpoints to outside callers. Agents can invoke a deployed Anvil server function by name, read or write rows in an Anvil data table, and call user-defined HTTP endpoints exposed by an Anvil app. The API is lightweight (five endpoints) and authenticated with a per-app bearer token issued from the Anvil editor.

Jentic One on GithubView OpenAPI Document

Install Jentic One Beta

Connect the Anvil Works API to your agent

Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Anvil Works API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.

Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.

1

Step 1: Jentic One Host machine

# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fanvil.works%2Fanvil-works" | sh
2

Step 2: Agent machine

# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fanvil.works%2Fanvil-works" | sh
jentic register       # connects your agent to your Jentic One instance

Jentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.

Capabilities

What an agent can do with Anvil Works API.

Invoke a named Python server function in a deployed Anvil app and receive its return value

Read, filter, and write rows in an Anvil data table without writing custom server code

Call user-defined HTTP endpoints registered inside an Anvil app from external systems

Look up the Anvil runtime version to confirm an app is reachable before issuing a call

Authenticate per-app with a bearer token scoped to a single Anvil application

Use Cases

Patterns agents use Anvil Works API for, with concrete tasks.

★ Internal tool back end

Use Anvil as the back end for an internal Python tool and let an external agent invoke its server functions over HTTPS. The agent calls /api/{app_id}/call/{function_name} with arguments, and Anvil runs the corresponding Python function in the cloud and returns the result. This avoids standing up a separate API service for small Python utilities.

POST to /api/{app_id}/call/send_report with {"args": ["q3"], "kwargs": {}} and return the function's response payload

Lightweight data table operations

Use Anvil data tables as a hosted Postgres-backed store and read or write rows directly through the HTTP API. Agents can list rows in /api/{app_id}/tables/{table_name}/rows, fetch a specific row by id, or post a new row, without writing any server-side Python. Useful for prototypes and small apps that do not need a dedicated database service.

GET /api/{app_id}/tables/customers/rows with a filter on email, then POST a new row if no match is found

Custom HTTP endpoints in an Anvil app

Anvil apps can expose user-defined HTTP endpoints under /http/{app_id}/{path}. Agents call these to trigger arbitrary logic inside the app, for example webhooks from third-party services or internal automation hooks. Anvil handles auth, routing, and Python execution server-side.

POST a Stripe webhook payload to /http/{app_id}/stripe-webhook and confirm a 200 response

AI agent integration via Jentic

An agent that needs to interact with a deployed Anvil application can search Jentic for the right Anvil operation, load the input schema, and execute the call without ever handling the raw bearer token. Jentic stores the per-app token and injects it server-side, so the agent only sees the function name and arguments.

Search Jentic for 'call an Anvil server function', load the schema for /api/{app_id}/call/{function_name}, and invoke it with the user's arguments

Key Endpoints

5 endpoints — jentic publishes the only available openapi specification for anvil works api, keeping it validated and agent-ready.

METHOD

PATH

DESCRIPTION

POST

/api/{app_id}/call/{function_name}

Invoke a deployed Python server function by name

GET

/api/{app_id}/tables/{table_name}/rows

List rows in an Anvil data table

GET

/api/{app_id}/tables/{table_name}/rows/{row_id}

Fetch a single data table row by id

POST

/http/{app_id}/{path}

Call a user-defined HTTP endpoint inside an Anvil app

GET

/api/version

Return the Anvil runtime version for diagnostics

POST

/api/{app_id}/call/{function_name}

Invoke a deployed Python server function by name

GET

/api/{app_id}/tables/{table_name}/rows

List rows in an Anvil data table

GET

/api/{app_id}/tables/{table_name}/rows/{row_id}

Fetch a single data table row by id

POST

/http/{app_id}/{path}

Call a user-defined HTTP endpoint inside an Anvil app

GET

/api/version

Return the Anvil runtime version for diagnostics

Why Jentic?

What agents get from Jentic-routed access to this vendor.

Setup

Setup

Wiring the Anvil Works API by hand means carrying a per-app bearer token and threading the app id and function or table name through each path yourself. Through Jentic you install once, import Anvil Works from the API Directory, store the token once, and your agent calls it.

Permission scoping

Permission scoping

Anvil Works puts the app id and table name in the URL path (/api/{app_id}/tables/{table_name}/rows/{row_id}), so a rule can pin your agent to one app or table: it can read rows from that table and nothing else. You choose the operations it may call, so server-function calls or custom HTTP endpoints are not included unless you add them.

Credential management

Credential isolation

Your Anvil per-app bearer token is stored once, encrypted, by your own Jentic One instance and injected for the right app id at execution time. It never enters the agent's prompt, logs, or context.

Intent-based discovery

Intent-based discovery

Agents search Jentic by intent such as 'call an Anvil server function' or 'read rows from an Anvil table', and Jentic returns the matching operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

Related APIs

Alternatives and complements available in the Jentic catalogue.

Alternative

Airtable API

→

Hosted relational store with REST CRUD on tables, similar feel to Anvil data tables.

Pick Airtable when the workflow is data-first and does not need server-side Python execution; pick Anvil when the agent must call Python logic alongside the table reads.

Complementary

GitHub API

→

Source control for the Python repo behind the Anvil app.

Use GitHub to manage the source of an Anvil app's git-linked repo while using Anvil to invoke the deployed runtime.

Complementary

Stripe API

Accept payments inside an Anvil-built web app via webhooks routed through /http/{app_id}/{path}.

Pair with Anvil when the deployed app needs payment processing and Stripe webhooks need to land on Anvil HTTP endpoints.

FAQs

Specific to using Anvil Works API through Jentic.

Why is there no official OpenAPI spec for Anvil Works API?

Anvil Works does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Anvil Works API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

What authentication does the Anvil Works API use?

Anvil uses HTTP bearer authentication with a per-app token issued from the Anvil editor. Through Jentic the token is stored in the encrypted Jentic One instance and injected at call time, so the agent context never sees the raw bearer value.

Can I read and write data table rows with the Anvil Works API?

Yes. GET /api/{app_id}/tables/{table_name}/rows lists rows, GET /api/{app_id}/tables/{table_name}/rows/{row_id} fetches one row, and POSTs to the same collection insert new rows. Filters are passed as query parameters.

How do I call an Anvil server function through Jentic?

Search Jentic for 'call an Anvil server function', load the schema for /api/{app_id}/call/{function_name}, and execute it with the function name and arguments. Jentic returns the function's serialised return value to the agent.

What are the rate limits for the Anvil Works API?

Limits depend on the plan attached to the Anvil app and are not declared in the OpenAPI spec. Hobby plans have lower per-minute caps than paid plans. Check the dashboard of the specific app for its current quota.

Can the API trigger arbitrary Python code in an Anvil app?

Only Python functions registered in the app as @anvil.server.callable can be invoked, and only HTTP endpoints decorated with @anvil.server.http_endpoint are reachable under /http/{app_id}/{path}. The API does not execute arbitrary code outside those decorators.

Can I limit what my agent is allowed to do with the Anvil Works API?

Yes. Because you run Jentic One yourself, your own rules decide which Anvil operations and which per-app credential the agent may use. Since Anvil puts the app id and table name in the URL path, such as /api/{app_id}/tables/{table_name}/rows/{row_id}, you can pin the agent to a single app or a single table so it only reads rows there. Server-function calls to /api/{app_id}/call/{function_name} and custom endpoints under /http/{app_id}/{path} stay out of reach unless you explicitly allow them.

GET STARTED

Start building with Anvil Works API

Explore with Jentic One
View OpenAPI Document