---
title: "Check permit requirements for a project in a King, Pierce or Snohomish County jurisdiction"
method: GET
path: "/api/public/permits"
---

# Check permit requirements for a project in a King, Pierce or Snohomish County jurisdiction

`GET /api/public/permits`

## Request

- Base URL: `https://www.kolmo.io`
- URL: `https://www.kolmo.io/api/public/permits`
- Auth: none declared

Kolmo's permit rule catalog for Washington cities and counties, in two layers: `source: authoritative` is the jurisdiction's own rule; `source: wa-baseline` is the Washington state baseline, used where Kolmo has not read the jurisdiction's own rule. A location that matches nothing returns nothing, never another city's rule. `projectType` matches the rule's project type exactly; free-text trigger/notes are searched only when no rule carries that type. Relay `verdict.detail`, cite `url` (the Kolmo page that renders the rule) and `officialSource` (the jurisdiction's or the state's source the rule rests on).

## Query parameters

- `projectType` string
- `location` string

## Response `200`

Matching rules, or a `message` naming the gap when none match (a gap is not evidence that no permit is required)

- object
  - `total` integer
  - `disclaimer` string
  - `message` string: Present instead of results when nothing matched
  - `results` object[]
    - `url` string: The Kolmo page that renders this rule: /permits/city/{city}/{projectType} (ADU: /permits/{city}/adu), or /permits for a jurisdiction with no city page. Cite it.
    - `jurisdictionSlug` string
    - `projectType` string
    - `location` string
    - `source` string: authoritative (city-cited) or wa-baseline (state floor)
    - `verdict` object: The answer for the rule as written, with no parcel and no project facts — the same verdict the MCP tool check_permit_requirements computes.
      - `verdict` 'required' | 'exempt' | 'depends' | 'unknown'
      - `posture` 'always' | 'never' | 'conditional' | 'local-unverified' | 'null', nullable
      - `headline` string
      - `detail` string: e.g. "Permit if: more than 30 in above grade · attached to the house". Relay this.
      - `issuedBy` string, nullable: Set when the permit is not issued by the building department
      - `textOnly` boolean: No encoded conditions for this rule; read `thresholds`
    - `thresholds` string, nullable: The rule text
    - `trigger` string, nullable
    - `requiresPermit` boolean: The rule's default posture, NOT the answer. Read `verdict`.
    - `estimatedPermitCost` number, nullable
    - `notes` string, nullable
    - `officialSource` string, nullable: The jurisdiction's own page or code section
    - `lastVerifiedAt` string, nullable
    - `hasExcerpt` boolean
    - `sourcePageHash` string, nullable
    - `citationKind` string, nullable: "municipal-section" or "adoption-chapter"; see statesThreshold
    - `statesThreshold` boolean: Whether Kolmo asserts the cited provision states the threshold. Gate a quoted number on this.
    - `permitHandout` object, nullable: The jurisdiction's own permit handout (title, url, revision, fetchedOn, kind), when one states the rule

---

[API](https://skmtc.dev/kolmo/apis/kolmo-construction-public-api.md) · [All operations](https://skmtc.dev/kolmo/apis/kolmo-construction-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kolmo/apis/kolmo-construction-public-api/revisions/8200d03403a1?raw)
