Official client libraries for the Writ (QuikDB Notes) REST API. Manage documents, spreadsheets, and folders programmatically from any language.
- Get your API key from Integrations in your dashboard
- Download the SDK for your language (see below)
- Copy the source file(s) into your project
- Set your API key as an environment variable:
QUIKDB_API_KEY=quikdb_your_key
| Language | Directory | Dependencies | Files |
|---|---|---|---|
| Python | python/ |
None (stdlib only) | client.py, models.py |
| JavaScript / TypeScript | javascript/ |
None (native fetch) | client.ts, types.ts |
| Go | go/ |
None (net/http) | quikdbnotes.go |
| Rust | rust/ |
reqwest, serde | client.rs, models.rs |
| Java | java/ |
None (java.net.http) | QuikDBNotes.java, JsonParser.java |
| C# | csharp/ |
.NET 8 (System.Text.Json) | QuikDBNotesClient.cs |
| Ruby | ruby/ |
None (Net::HTTP) | quikdb_notes.rb |
| PHP | php/ |
None (stream_context) | QuikDBNotes.php |
import os
from quikdb_notes import QuikDBNotes
client = QuikDBNotes(os.environ["QUIKDB_API_KEY"])
# Documents
docs = client.documents.list()
doc_id = client.documents.create(title="Meeting Notes", content="# Agenda", format="markdown")
doc = client.documents.get(doc_id)
# Spreadsheets
sid = client.spreadsheets.create(title="Sales Data", sheets=["Q1", "Q2"])
sheets = client.spreadsheets.list_sheets(sid)
client.spreadsheets.write_cells(sid, sheets[0]["id"], "A1:C2", [
["Product", "Price", "Qty"],
["Widget", 9.99, 100]
])
csv = client.spreadsheets.export_csv(sid)
# Folders
fid = client.folders.create(name="Projects", color="#3b82f6")
contents = client.folders.contents(fid)import { QuikDBNotes } from './client';
const client = new QuikDBNotes(process.env.QUIKDB_API_KEY!);
// Documents
const { documents } = await client.documents.list();
const id = await client.documents.create({ title: 'Meeting Notes', content: '# Agenda', format: 'markdown' });
const doc = await client.documents.get(id);
// Spreadsheets
const sid = await client.spreadsheets.create({ title: 'Sales Data', sheets: ['Q1', 'Q2'] });
const sheets = await client.spreadsheets.listSheets(sid);
await client.spreadsheets.writeCells(sid, sheets[0].id, 'A1:C2', [
['Product', 'Price', 'Qty'],
['Widget', 9.99, 100]
]);
const csv = await client.spreadsheets.exportCsv(sid);
// Folders
const fid = await client.folders.create({ name: 'Projects', color: '#3b82f6' });
const contents = await client.folders.contents(fid);client := quikdbnotes.New(os.Getenv("QUIKDB_API_KEY"))
docs, _ := client.Documents.List(nil)
id, _ := client.Documents.Create(quikdbnotes.CreateDocumentReq{
Title: "Meeting Notes",
Format: "markdown",
})let client = QuikDBNotes::new(std::env::var("QUIKDB_API_KEY").unwrap());
let docs = client.documents().list(None).await?;
let id = client.documents().create("Meeting Notes", None, None).await?;Base URL: https://notes.quikdb.com/api/v1
All requests require an API key passed as a Bearer token:
Authorization: Bearer quikdb_your_api_key
| Method | Endpoint | Description |
|---|---|---|
| GET | /documents |
List documents |
| POST | /documents |
Create document |
| GET | /documents/:id |
Get document |
| PUT | /documents/:id |
Update document |
| DELETE | /documents/:id |
Delete document |
| GET | /documents/:id/content |
Get raw content |
| PUT | /documents/:id/content |
Replace content |
| PATCH | /documents/:id/content |
Append content (Paid) |
| POST | /documents/:id/share |
Share document (Paid) |
| Method | Endpoint | Description |
|---|---|---|
| GET | /spreadsheets |
List spreadsheets |
| POST | /spreadsheets |
Create spreadsheet |
| GET | /spreadsheets/:id |
Get spreadsheet |
| PUT | /spreadsheets/:id |
Update spreadsheet |
| DELETE | /spreadsheets/:id |
Delete spreadsheet |
| GET | /spreadsheets/:id/sheets |
List sheets |
| POST | /spreadsheets/:id/sheets |
Add sheet |
| GET | /spreadsheets/:id/sheets/:s/cells |
Read cells |
| PUT | /spreadsheets/:id/sheets/:s/cells |
Write cells |
| PATCH | /spreadsheets/:id/sheets/:s/cells |
Patch cells (Paid) |
| POST | /spreadsheets/:id/sheets/:s/append |
Append rows (Paid) |
| POST | /spreadsheets/:id/sheets/:s/clear |
Clear cells |
| GET | /spreadsheets/:id/export |
Export (CSV/JSON) |
| POST | /spreadsheets/:id/import |
Import (Paid) |
| Method | Endpoint | Description |
|---|---|---|
| GET | /folders |
List folders |
| POST | /folders |
Create folder |
| GET | /folders/:id |
Get folder |
| PUT | /folders/:id |
Update folder |
| DELETE | /folders/:id |
Delete folder |
| GET | /folders/:id/contents |
Get folder contents |
| Tier | Requests/min | Files/month | API Keys |
|---|---|---|---|
| Free | 30 | 5 | 2 |
| Paid | 100 | 500 | Unlimited |
See API_TIERS.md for the full free vs paid feature matrix.
Copy-paste this into ChatGPT, Claude, or any AI coding assistant to get working integration code:
I need to integrate with the Writ (QuikDB Notes) API.
Base URL: https://notes.quikdb.com/api/v1
Auth: Bearer token in Authorization header (API key starts with "quikdb_")
Documents: GET/POST /documents, GET/PUT/DELETE /documents/:id, GET/PUT /documents/:id/content
Spreadsheets: GET/POST /spreadsheets, GET/PUT/DELETE /spreadsheets/:id
Sheets: GET/POST /spreadsheets/:id/sheets
Cells: GET/PUT /spreadsheets/:id/sheets/:s/cells (range query param, values[][] body)
Folders: GET/POST /folders, GET/PUT/DELETE /folders/:id, GET /folders/:id/contents
SDKs available at: https://github.com/quikdb/quikdb-notes-sdks
Please write code to [YOUR TASK]. Use my API key from env var QUIKDB_API_KEY.
See the Guide & Documentation on the Writ website for detailed usage instructions, interactive examples, and per-section AI integration prompts.
MIT