Skip to content
Developers

The Zulu API.

One documented REST API behind every module — for your team's integrations and your AI agent alike. Token auth, webhooks, and an OpenAPI spec you can ingest whole.

Base URL
https://dashboard.getzulu.io/api/v1
Auth
Authorization: Bearer zulu_{key}
Rate limit
60 requests / min per key (configurable)
Format
JSON · OpenAPI 3 · webhooks
dashboard.getzulu.io / api / v1
# Base: https://dashboard.getzulu.io/api/v1

# 1 · Create an account (public, no auth) — declare the modules to enable
POST /account/signup
{ "fields": { "email": "you@co.nz", "name_first": "Sam", "company": "Co", "modules": ["opt_client"] } }
→ 201  { "data": { "api_key": "zulu_••••", "username": "co" } }

# 2 · Activate with the 6-digit code emailed to the owner
POST /account/verify
{ "fields": { "email": "you@co.nz", "code": "482913" } }
→ 200  { "data": { "activated": true } }

# 3 · Authenticate and add your first client
POST /client
Authorization: Bearer zulu_••••
{ "company": "Acme Pumps Ltd", "email": "ops@acmepumps.co.nz", "phone": "+64 9 555 0182" }
→ 201  { "data": { "token": "9f2a…", "company": "Acme Pumps Ltd" } }
The API at a glance

Every resource, one map.

A high-level view of what the API does today — generated from the live spec, so it never drifts. Every endpoint needs your API key except signup, verify and status. Want the full request/response detail? It's all in the OpenAPI spec — and your key arrives the moment you sign up. Prefer tools over raw HTTP? The native MCP server (@getzulu/mcp) and CLI (@getzulu/cli) are on npm — read-only today.

Public

1
  • GET /API Status

Account

3
  • GET /account/modulesList valid module keys (public; richer with a system key)
  • POST /account/signupSign up a new account (public)
  • POST /account/verifyVerify and activate an account (public)

Clients

4
  • GET /clientList clients
  • POST /clientCreate client
  • GET /client/{token}Get single client
  • PUT /client/{token}Update client

Files

1
  • POST /fileUpload file

Forms

4
  • GET /formList forms
  • GET /form/{identifier}Get form detail
  • GET /form_submissionList form submissions
  • GET /form_submission/{token}Get submission detail

Inventory

2
  • GET /inventory/stock/{product}Get product stock with location breakdown
  • POST /inventory/stock/adjustmentMake a stock adjustment

Invoices

7
  • GET /invoiceList invoices
  • POST /invoiceCreate invoice
  • GET /invoice/{token}Get invoice detail
  • PUT /invoice/{token}Update invoice
  • POST /invoice/{token}/lineAdd invoice line
  • PUT /invoice/{token}/line/{line_id}Update invoice line
  • DELETE /invoice/{token}/line/{line_id}Delete invoice line

Job Cards

4
  • GET /jobcardList job cards
  • POST /jobcardCreate job card
  • GET /jobcard/{token}Get job card detail
  • PUT /jobcard/{token}Update job card

Notes

2
  • GET /note/{object}/{token}List notes for an entity
  • POST /note/{object}/{token}Create a note

Opportunities

5
  • GET /opportunityList opportunities
  • POST /opportunityCreate opportunity
  • GET /opportunity/stageList pipeline stages
  • GET /opportunity/{token}Get opportunity detail
  • POST /opportunity/{token}/stageMove opportunity to another stage

Posts

4
  • GET /post/{type}List posts by type
  • GET /post/{type}/{identifier}Get single post
  • POST /postCreate new post
  • PUT /post/{id}Update existing post

Products

16
  • GET /productList products
  • POST /productCreate product
  • GET /product/{token}Get single product
  • PUT /product/{token}Update product
  • PUT /product/{token}/priceUpdate product prices
  • PUT /product/{token}/categoryManage product categories
  • PUT /product/{token}/tagManage product tags
  • GET /product/taxonomyGet product taxonomy
  • POST /categoryCreate category
  • GET /category/{token}Get single category
  • PUT /category/{token}Update category
  • PUT /product/{token}/category/{category_token}Add category to product
  • DELETE /product/{token}/category/{category_token}Remove category from product
  • PUT /product/{token}/tag/{tag_option_token}Add tag to product
  • DELETE /product/{token}/tag/{tag_option_token}Remove tag from product
  • POST /product/{token}/imageUpload product image(s)

Purchase Orders

7
  • GET /porderList purchase orders
  • POST /porderCreate purchase order
  • GET /porder/{token}Get purchase order detail
  • PUT /porder/{token}Update purchase order
  • POST /porder/{token}/lineAdd purchase order line
  • PUT /porder/{token}/line/{line_id}Update purchase order line
  • DELETE /porder/{token}/line/{line_id}Delete purchase order line

Suppliers

4
  • GET /supplierList suppliers
  • POST /supplierCreate supplier
  • GET /supplier/{token}Get single supplier
  • PUT /supplier/{token}Update supplier

Tenant

1
  • GET /tenant_infoGet tenant information
Authentication

One bearer token, scoped per user.

Send your key as a bearer token on every request. Keys are scoped per user and revocable — an AI agent receives one from /account/signup, or you can generate one in your Zulu account settings. Calls are limited to 60 per minute per key (configurable, higher allowances on request); requests over the limit return 429.

How an agent signs up
headers
Authorization: Bearer zulu_5f3c…
Content-Type: application/json
MCP server & CLI

The same API, as native tools.

Two official npm packages wrap the API for you. @getzulu/mcp is a local MCP server exposing 24 tools to Claude Desktop, Claude Code and any MCP client — ask about your clients, invoices, stock or forms in plain language. @getzulu/cli puts the same tools in your terminal as getzulu commands that output raw API JSON. Both authenticate with your zulu_ token, run locally (your token never leaves your machine), and are read-only today — write actions go through the REST API.

View on npm
# Connect Zulu to Claude Code — one line
claude mcp add getzulu -e ZULU_API_TOKEN=zulu_… -- npx -y @getzulu/mcp

# Claude Desktop → Settings → Developer → Edit Config
{ "mcpServers": { "getzulu": {
    "command": "npx", "args": ["-y", "@getzulu/mcp"],
    "env": { "ZULU_API_TOKEN": "zulu_…" } } } }

# Then ask: "What Zulu account am I connected to?"

Build on the Zulu API.

API access is in every plan — no per-agent or per-call pricing. Start free, no credit card.