Client libraries, demos and tools
Client libraries, demos and ready-made tools published on the Verbatim AI GitHub organization.
Everything we publish for API integrators lives in one place — the Verbatim AI GitHub organization:
You never need any of it: the API is plain HTTPS + JSON and curl works fine (see the
API & Integration Guide). These repositories exist to remove the boilerplate — typed models,
authentication wiring, and a couple of ready-made tools.
At a glance
| Repository | Language | What it is |
|---|---|---|
python-client | Python | Generated SDK for the REST API |
typescript-node-client | TypeScript | Generated SDK for the REST API |
java-spring-rest-client | Java | Generated SDK (Spring RestTemplate) |
java-resteasy-client | Java | Generated SDK (JAX-RS / RESTEasy) |
python-token-builder | Python | Generate RSA key pairs and mint JWTs |
file-directory-sync | Python | Sync a local directory tree into a corpus |
client-demo | Mixed | End-to-end REST client examples |
All repositories are public. No registry publication yet — install straight from Git (see each section below).
API clients
The four SDKs are generated from the OpenAPI specification, so they always expose the same surface:
Auth, Corpus, Document, Session, Post and Usage APIs, plus typed models for every request and
response. They are regenerated whenever the spec changes — do not hand-edit them, your changes will be
overwritten on the next build.
All four support the two authentication schemes described in Authentication:
- JWT Bearer —
Authorization: Bearer <jwt>, for server-to-server calls. See RSA Keys. - Access token —
X-Access-Token: <token>, short-lived, for browsers and untrusted clients. See Access Keys.
Python — python-client
python-clientRequires Python 3.10+. Package name: verbatim_client.
pip install git+https://github.com/verbatim-ai/python-client.gitimport verbatim_client
configuration = verbatim_client.Configuration(
host="https://api.verbatim-ai.com",
access_token="<your-jwt>",
)
with verbatim_client.ApiClient(configuration) as api_client:
corpus_api = verbatim_client.CorpusApi(api_client)
corpora = corpus_api.list_corpus()TypeScript / Node — typescript-node-client
typescript-node-clientPackage name: verbatim_client. Clone, then:
npm install
npm run buildimport { CorpusApi } from "verbatim_client";
const api = new CorpusApi("https://api.verbatim-ai.com");
api.setApiKey(/* JWT bearer */ "<your-jwt>");Java (Spring) — java-spring-rest-client
java-spring-rest-clientBuilt on Spring's RestTemplate. Requires Java 8+ and Maven or Gradle.
<dependency>
<groupId>com.verbatim.client</groupId>
<artifactId>spring-rest</artifactId>
<version>1.0.0</version>
</dependency>mvn clean install # install to your local ~/.m2 repositoryApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("https://api.verbatim-ai.com");
HttpBearerAuth jwt = (HttpBearerAuth) client.getAuthentication("JWT");
jwt.setBearerToken("<your-jwt>");
CorpusApi api = new CorpusApi(client);Packages: com.verbatim.client.springrest.{api,invoker,models}.
Java (RESTEasy) — java-resteasy-client
java-resteasy-clientSame API, JAX-RS / RESTEasy transport — use this one when you are not in a Spring application.
<dependency>
<groupId>com.verbatim.client</groupId>
<artifactId>resteasy</artifactId>
<version>1.0.0</version>
</dependency>Packages: com.verbatim.client.resteasy.{api,invoker,models}. Setup is identical to the Spring client above.
Tools
python-token-builder — keys and tokens
python-token-builder — keys and tokensThe companion to the RSA Keys User Guide. A dependency-free helper (Python 3.10+ and openssl
on your PATH) that generates an RSA-4096 key pair and mints RS512 JWTs:
# 1. generate a key pair — register the .pub file in the backoffice
python key-builder/main.py --gen-keys --key-name staging
# 2. mint a token with the key id the backoffice gave you
python key-builder/main.py \
--key-name staging \
--key-id <key-uuid-from-backoffice> \
--org-id <your-org-uuid>The JWT goes to stdout and diagnostics to stderr, so it pipes cleanly into curl or pbcopy.
Use it for testing and bootstrapping; in production, sign tokens inside your own backend —
Part B of the RSA Keys guide shows the equivalent in Node.js, Python and Java.
file-directory-sync — keep a corpus in step with a folder
file-directory-sync — keep a corpus in step with a folderMirrors a local directory tree into a corpus and keeps a small SQLite database mapping each local file to its
document UID. It uploads new files, replaces modified ones, deletes removed ones, and resumes interrupted
transfers. Change detection filters on size and mtime, then confirms with a SHA-256 hash. Uploads run
concurrently (five workers by default) through the three-step init → transfer → commit sequence.
Requires Python 3.11+ and uv.
uv sync
cp config.example.toml /etc/verbatim/sync.toml # then edit: org id, keys dir, key id, corpus| Command | What it does |
|---|---|
--init-db | Create or upgrade the state database |
--check | Validate the configuration and test API connectivity |
--scan-only | Catalog local files without calling the API |
--dry-run | Show what would be uploaded, change nothing |
| (no flag) | Run the full synchronization |
--stats | Print sync status and statistics |
--rebuild-db | Rebuild the local database from the corpus metadata |
Authentication uses the same RSA key pair as everything else — generate it with python-token-builder and
register the public key in the backoffice.
client-demo — end-to-end examples
client-demo — end-to-end examplesCollected examples of REST client implementations against the API — the place to look for a complete
"upload a document, wait for it to be ready, ask a question" flow rather than a single call.
🚧 This repository is being populated; the SDK repositories above each ship usage snippets in their README
in the meantime.
How the clients are generated
The SDKs are produced with OpenAPI Generator from the
published specification:
The spec is the source of truth. If you need a language we do not ship — Go, C#, Rust, PHP, Ruby — point
the generator at that URL and you will get an equivalent client:
brew install openapi-generator
openapi-generator generate \
-i https://www.verbatim-ai.com/api-docs/openapi.json \
-g go \
-o ./verbatim-go-clientYou can also explore the API interactively in the
Swagger playground — paste a JWT minted with
python-token-builder and call the endpoints directly.
Which one do I need?
| If you want to… | Use |
|---|---|
| Call the API from an application | The SDK for your language, above |
| Get a token to test with | python-token-builder |
| Push a folder of documents into a corpus | Documentation here - file-directory-sync |
| Add a chatbot to a website | The JS Chatbot Widget — no SDK required |
| Use a language we don't publish | Generate a client from the OpenAPI spec |
Issues and contributions
Open an issue on the relevant repository. For the generated SDKs, report the problem against the API or the
spec rather than the generated code — the fix belongs upstream, and the client is rebuilt from it.
Updated about 1 hour ago