Coperniq ahJs API

The ahJs API from Coperniq — 2 operation(s) for ahjs.

Operations 3

GET /ahjs List AHJs #
GET /ahjs/{id} Get AHJ #
PATCH /ahjs/{id} Update AHJ #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/coperniq-ahjs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

coperniq-ahjs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Key accounts Ah Js API
  version: 1.0.0
servers:
- url: https://api.coperniq.io/v1
  description: Production server
tags:
- name: ahJs
paths:
  /ahjs:
    get:
      operationId: list-ahjs
      summary: List AHJs
      description: 'Retrieve a paginated list of Authorities Having Jurisdiction (AHJs).


        Supports:

        - Pagination (`page_size`, `page`)

        - Sorting by name (`order_by`, default: asc)

        - Search by name or state code (`q`) — when `q` is exactly two characters it also matches the two-letter state code

        - Filter by `state` (two-letter code), `type`, and `country` (default: `US`)

        - Geo mode: pass `lat`+`lng` (together) to return every AHJ whose boundary covers the point — e.g. city, county, and state — ordered most-specific-first. Name/state/type filters are ignored, and an empty array is returned if none cover the point.


        Only active jurisdictions are returned. AHJs are seeded globally from the US Census TIGER catalog plus per-company private records. Most fields are read-only; only custom fields can be updated (see PATCH /ahjs/{id}).

        '
      tags:
      - ahJs
      parameters:
      - name: page_size
        in: query
        description: Number of items per page (max 100)
        required: false
        schema:
          type: integer
          default: 20
      - name: page
        in: query
        description: Page number (1-based)
        required: false
        schema:
          type: integer
          default: 1
      - name: q
        in: query
        description: Search by AHJ name (case-insensitive). If exactly two characters, also matches the state code.
        required: false
        schema:
          type: string
      - name: state
        in: query
        description: Filter by two-letter state code (e.g. "CA").
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: Filter by jurisdiction type.
        required: false
        schema:
          $ref: '#/components/schemas/AhjsGetParametersType'
      - name: country
        in: query
        description: Filter by country code.
        required: false
        schema:
          type: string
          default: US
      - name: order_by
        in: query
        description: Sort order for results
        required: false
        schema:
          $ref: '#/components/schemas/AhjsGetParametersOrderBy'
      - name: lat
        in: query
        description: Latitude in decimal degrees. Must be used together with `lng`.
        required: false
        schema:
          type: number
          format: double
      - name: lng
        in: query
        description: Longitude in decimal degrees. Must be used together with `lat`.
        required: false
        schema:
          type: number
          format: double
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: List of AHJs
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AHJ'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List-ahjsRequestBadRequestError'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List-ahjsRequestUnauthorizedError'
        '502':
          description: Bad gateway — an upstream service request failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/List-ahjsRequestBadGatewayError'
  /ahjs/{id}:
    get:
      operationId: get-ahj
      summary: Get AHJ
      description: Retrieve a specific AHJ by ID, including catalog metadata and custom field values.
      tags:
      - ahJs
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: AHJ details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AHJ'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAhjRequestUnauthorizedError'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAhjRequestNotFoundError'
        '502':
          description: Bad gateway — an upstream service request failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAhjRequestBadGatewayError'
    patch:
      operationId: update-ahj
      summary: Update AHJ
      description: 'Update custom property values on an AHJ. The body `custom` map is keyed by property `keyName` — fetch the available keys via `GET /properties?record_type=ahj`.


        Built-in AHJ fields (under `Community Data` in the UI) are read-only and cannot be updated through this endpoint.


        Pass `null` to clear a value.

        '
      tags:
      - ahJs
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: allow_new_options
        in: query
        description: Whether to allow creation of new dropdown options during record creation
        required: false
        schema:
          type: boolean
          default: false
      - name: x-api-key
        in: header
        required: true
        schema:
          type: string
      responses:
        '200':
          description: AHJ updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AHJ'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAhjRequestBadRequestError'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAhjRequestUnauthorizedError'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAhjRequestNotFoundError'
        '502':
          description: Bad gateway — an upstream service request failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateAhjRequestBadGatewayError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AHJUpdate'
components:
  schemas:
    AHJUpdate:
      type: object
      properties:
        custom:
          type: object
          additionalProperties:
            description: Any type
          description: Custom field values keyed by property keyName. Pass `null` to clear a value. Unknown keyNames are rejected with a 400 — fetch valid keys via GET /properties?record_type=ahj.
      required:
      - custom
      title: AHJUpdate
    UpdateAhjRequestBadGatewayError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/AhjsIdPatchResponsesContentApplicationJsonSchemaCode'
      title: UpdateAhjRequestBadGatewayError
    GetAhjRequestBadGatewayError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/AhjsIdGetResponsesContentApplicationJsonSchemaCode'
      title: GetAhjRequestBadGatewayError
    AhjsIdGetResponsesContentApplicationJsonSchemaCode:
      type: string
      enum:
      - BAD_GATEWAY
      title: AhjsIdGetResponsesContentApplicationJsonSchemaCode
    AhjsIdPatchResponsesContentApplicationJsonSchemaCode:
      type: string
      enum:
      - BAD_GATEWAY
      title: AhjsIdPatchResponsesContentApplicationJsonSchemaCode
    UpdateAhjRequestNotFoundError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/AhjsIdPatchResponsesContentApplicationJsonSchemaCode'
      title: UpdateAhjRequestNotFoundError
    GetAhjRequestUnauthorizedError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/AhjsIdGetResponsesContentApplicationJsonSchemaCode'
      title: GetAhjRequestUnauthorizedError
    UpdateAhjRequestBadRequestError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/AhjsIdPatchResponsesContentApplicationJsonSchemaCode'
        field:
          type: string
          description: Field that caused the validation error (if applicable)
      title: UpdateAhjRequestBadRequestError
    AHJ:
      type: object
      properties:
        id:
          type: integer
          description: Unique identifier.
        uuid:
          type:
          - string
          - 'null'
          description: AHJID UUID (when known).
        name:
          type: string
          description: Full AHJ name (e.g. "City of San Francisco").
        type:
          oneOf:
          - $ref: '#/components/schemas/AhjType'
          - type: 'null'
          description: Jurisdiction type.
        country:
          type: string
          description: Two-letter country code (e.g. "US").
        state:
          type:
          - string
          - 'null'
          description: Two-letter state code (e.g. "CA").
        stateName:
          type:
          - string
          - 'null'
          description: Full state name (e.g. "California").
        parentCounty:
          type:
          - string
          - 'null'
          description: For sub-county jurisdictions, the containing county name.
        geoId:
          type:
          - string
          - 'null'
          description: US Census TIGER GEOID for the boundary.
        ahjRegistryCode:
          type:
          - string
          - 'null'
          description: AHJ Registry composite code (e.g. "TX-4805000").
        isActive:
          type: boolean
          description: Whether this AHJ is currently active in the catalog.
        isPrivate:
          type:
          - boolean
          - 'null'
          description: True for company-private jurisdictions, false for global catalog entries.
        pointOfContact:
          type:
          - string
          - 'null'
        submissionMethod:
          type:
          - string
          - 'null'
          description: How permit submissions are accepted (online, in-person, etc.).
        emails:
          type: array
          items:
            type: string
            format: email
        phones:
          type: array
          items:
            type: string
        address:
          type:
          - string
          - 'null'
        website:
          type:
          - string
          - 'null'
        portal:
          type:
          - string
          - 'null'
          description: Permit portal URL.
        turnaround:
          type:
          - integer
          - 'null'
          description: Typical permit turnaround in days.
        fees:
          type:
          - string
          - 'null'
        notes:
          type:
          - string
          - 'null'
        permitSubmissionNotes:
          type:
          - string
          - 'null'
        buildingCodeModel:
          type:
          - string
          - 'null'
        buildingCodeLocal:
          type:
          - string
          - 'null'
        residentialCodeModel:
          type:
          - string
          - 'null'
        residentialCodeLocal:
          type:
          - string
          - 'null'
        fireCodeModel:
          type:
          - string
          - 'null'
        fireCodeLocal:
          type:
          - string
          - 'null'
        electricalCodeModel:
          type:
          - string
          - 'null'
        electricalCodeLocal:
          type:
          - string
          - 'null'
        windCodeModel:
          type:
          - string
          - 'null'
        windCodeLocal:
          type:
          - string
          - 'null'
        codesOther:
          type:
          - string
          - 'null'
        firePathwaysEnforced:
          type:
          - boolean
          - 'null'
        electricalEngineerStampRequired:
          type:
          - boolean
          - 'null'
        structuralStampRequired:
          type:
          - boolean
          - 'null'
        climateZone:
          type:
          - string
          - 'null'
        ashraeMinTempC:
          type:
          - number
          - 'null'
          format: double
        ashraeMaxTempC:
          type:
          - number
          - 'null'
          format: double
        ashraeMinTempF:
          type:
          - number
          - 'null'
          format: double
          description: Auto-computed from ashraeMinTempC. Used for NEC 690.7 max-Voc string sizing.
        ashraeMaxTempF:
          type:
          - number
          - 'null'
          format: double
          description: Auto-computed from ashraeMaxTempC. Used for thermal derating in PV performance modeling.
        centroidLatitude:
          type:
          - number
          - 'null'
          format: double
        centroidLongitude:
          type:
          - number
          - 'null'
          format: double
        landAreaSqMiles:
          type:
          - number
          - 'null'
          format: double
        specialZones:
          type:
          - array
          - 'null'
          items:
            type: string
        buildingDeptHours:
          type:
          - array
          - 'null'
          items:
            type: string
        tigerYear:
          type:
          - integer
          - 'null'
        funcstat:
          type:
          - string
          - 'null'
          description: US Census functional status code.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        custom:
          type: object
          additionalProperties:
            description: Any type
          description: Custom field values keyed by property keyName. This includes only customer-defined custom columns (see GET /properties?record_type=ahj). Built-in catalog AHJ fields (turnaround, website, fees, notes, etc.) are exposed as top-level fields on the AHJ object and are read-only.
      description: An Authority Having Jurisdiction (AHJ). Most fields are read-only catalog data sourced from the US Census TIGER dataset; only fields under `custom` are user-editable.
      title: AHJ
    UpdateAhjRequestUnauthorizedError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/AhjsIdPatchResponsesContentApplicationJsonSchemaCode'
      title: UpdateAhjRequestUnauthorizedError
    AhjsGetParametersOrderBy:
      type: string
      enum:
      - asc
      - desc
      default: asc
      title: AhjsGetParametersOrderBy
    AhjsGetResponsesContentApplicationJsonSchemaCode:
      type: string
      enum:
      - BAD_GATEWAY
      title: AhjsGetResponsesContentApplicationJsonSchemaCode
    List-ahjsRequestBadGatewayError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/AhjsGetResponsesContentApplicationJsonSchemaCode'
      title: List-ahjsRequestBadGatewayError
    AhjType:
      type: string
      enum:
      - STATE
      - COUNTY
      - CITY
      - MUNICIPALITY
      - TOWNSHIP
      - TRIBAL
      description: Jurisdiction type.
      title: AhjType
    GetAhjRequestNotFoundError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/AhjsIdGetResponsesContentApplicationJsonSchemaCode'
      title: GetAhjRequestNotFoundError
    List-ahjsRequestBadRequestError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/AhjsGetResponsesContentApplicationJsonSchemaCode'
        field:
          type: string
          description: Field that caused the validation error (if applicable)
      title: List-ahjsRequestBadRequestError
    AhjsGetParametersType:
      type: string
      enum:
      - STATE
      - COUNTY
      - CITY
      - MUNICIPALITY
      - TOWNSHIP
      - TRIBAL
      title: AhjsGetParametersType
    List-ahjsRequestUnauthorizedError:
      type: object
      properties:
        message:
          type: string
        code:
          $ref: '#/components/schemas/AhjsGetResponsesContentApplicationJsonSchemaCode'
      title: List-ahjsRequestUnauthorizedError
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic