PRODUCT UPDATE
Last updated:
September 3, 2026

The Ziggu public API: what it covers and what it does not

The Ziggu public API exposes 28 resources across 55 endpoints, from projects and units to issues, decisions, installments and messages, with a rate limit of 60 requests a minute.

Ziggy with a microphone
Follow us for more content

Key takeaways

  • The Ziggu public API covers 28 resources across 55 endpoints, served at https://api.ziggu.app/public in JSON:API format.
  • Access runs on a custom ziggu-integration-token header carrying an integration slug and a token, granted per organisation on request.
  • The rate limit is 60 requests a minute across all endpoints, and most resources accept POST, PUT or PATCH as well as GET.
  • Task Management, milestones, Forms and Workflows have no endpoint, and there are no webhooks: nothing in the API pushes an update to you.
  • Every project splits into phases, lots and buildings that carry the units, and every level except project and unit is optional.

Twenty-eight resources, grouped by what they describe

The Ziggu public API exposes 28 resources over 55 endpoints, in seven families: project structure, people, snagging and aftercare, decisions, money, documents and messages. That is the whole surface. Anything outside those seven families is not reachable from the API, whatever the product page next to it says.

One thing catches every team on the first afternoon. The names in the API are not the names on the website. A developer greps for issues; a project lead calls the same thing Reports. Both are right, and a mapping table saves an hour of confusion in the kickoff call.

FamilyResources in the APIWhat it is called in Ziggu
Project structureprojects, phases, lots, buildings, units, spaces, fractionsProjects
Peoplecustomers, unit_customers, companies, partners, employees (read only)Clients and partners
Snagging and aftercareissues, issue_lists, issue_list_types, issue_categories, issue_statuses, tickets (read), ticket_categories (read)Reports
Decisionsdecisions, decision_types, decision_type_categories (read), proposalsDecisions and Approvals
Moneyinstallments, installments/groupsThe financial layer in Client Updates
Documentsdocuments, attachment_categoriesDocuments
Messagesmessages (GET and POST only)Conversations

Read that last column before you name anything in your own system. A field called issue_status landing in a dashboard your project leads use every day will be read as a bug tracker, not as a snag list.

The hierarchy every call inherits

A project divides into phases, lots and buildings, and those carry the units; a unit then carries its spaces. Every foreign key follows that line, so a filtered call at any level returns the branch below it.

fractions sits beside that line rather than in it: it carries a project, a unit and an installment, so it is the join between a unit and what is invoiced against it.

Two things worth knowing before you write the joins. Phases, lots and buildings each carry units_count and units_active_count, so a roll-up for reporting needs no aggregation on your side. And every level except project and unit is optional: a unit can hang straight off a project.

Access, authentication and the rate limit

Authentication runs on a custom header, ziggu-integration-token, carrying your integration slug and your token. It is not OAuth 2.0 and there is no bearer token. Access is granted per organisation, on request: contact the team with what you intend to build and they set the integration up with you.

The limit is 60 requests a minute, counted across all endpoints together, not per resource. Plan a nightly sync around it rather than a per-record loop.

The API is not read only. Most resources accept POST, PUT or PATCH, and several accept DELETE. messages is the exception that catches people out: it takes GET and POST, so you can post into a conversation but not edit or remove what is there.

Responses follow JSON:API. A flat import gives you one column called data, so plan on unpacking data and attributes, and on resolving relationships that arrive as references rather than as nested objects.

Availability is published rather than promised: over the last 60 days the API ran at 99.997%, on the same public status page as the app and the website.

Four things the API does not do

Four capabilities on the Ziggu website have no endpoint behind them, and knowing that up front is worth more than any feature list.

There is no tasks resource. Task Management is a product feature, and it is not reportable through the public API. If your dashboard needs task state, it needs a different route.

There are no milestones. phases exists and is often mistaken for it, but a phase is a structural level that carries lots and buildings, not a date on a timeline. Anything you build on milestones in the API is being built on a resource that does not exist.

Forms and Workflows have no endpoint either. Survey answers and workflow state stay inside the product.

There are no webhooks. Nothing in the API pushes to you, so every integration is a pull on your schedule, inside the 60-per-minute limit. That single fact usually decides the architecture: a change in Ziggu becomes visible to your system when your next poll runs, not the moment it happens.

Feature on the websiteEndpoint in the public API
ReportsYes: issues, issue_lists, tickets
Decisions and ApprovalsYes: decisions, proposals
DocumentsYes: documents, attachment_categories
ConversationsPartly: messages, GET and POST only
Client UpdatesPartly: installments and installments/groups
Task ManagementNo
FormsNo
WorkflowsNo

If you are looking for a connection to a named tool rather than a resource list, the integrations overview is the shorter route.

Where the reference lives

The full reference is an OpenAPI 3.0.3 specification, published at api.ziggu.app/api_docs, and it describes every endpoint with its fields and its relationships. It is the source of record: where this page and the specification disagree, the specification is right.

To get started, contact the team with the integration you have in mind. Access is set up per organisation, and the same conversation is where the token comes from.

Sources

  • Ziggu status page, rolling 60-day uptime, consulted 2026-09-03: status.ziggu.app

Written by

Vincent Van Impe

Vincent Van Impe is a co-founder of Ziggu, where he leads sales and marketing. He has a background in architecture, project management and SaaS, and writes about client experience, project delivery, and how project-based businesses keep clients and partners in the loop.
Connect on Linkedin

Boost your customer happiness and efficiency with Ziggu. Connect with our sales team today.

SCHEDULE A DEMO
Ziggy-mascot waving and smiling

Stay up-to-date thanks to our hyper-relevant newsletters.

SUBSCRIBE
Ziggy-mascot waving and smiling