> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prontiq.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Validate

> Find the best G-NAF match for a submitted address string and classify request match quality. Use `prontiqMatchScore` and `prontiqMatchQuality` for acceptance thresholds and user prompts. If `match` is present, `match.confidence` is separate G-NAF source-record metadata for the address record.

Use Validate when you already have a complete free-text address and need the
best matching G-NAF record plus Prontiq match-quality fields.

For match-quality handling and SDK examples, see the
[Validate guide](/guides/address/validate).


## OpenAPI

````yaml GET /v1/address/validate
openapi: 3.1.0
info:
  title: Prontiq API
  version: 2.0.0
  license:
    name: Proprietary
    url: https://prontiq.dev
  description: >-
    Prontiq provides authenticated APIs for Australian address search,
    validation, enrichment, reverse geocoding, and locality lookup. Authenticate
    public data requests with `X-Api-Key`. Successful Address API calls may
    include rate-limit and credit-usage headers. Errors use a stable `{ error: {
    code, message, status, request_id } }` envelope; `request_id` is
    intentionally snake_case for v1 compatibility.
servers:
  - url: https://api.prontiq.dev
    description: Production API
security: []
tags:
  - name: Address
    description: >-
      Australian address autocomplete, validation, enrichment, reverse
      geocoding, postcode lookup, and suburb lookup.
paths:
  /v1/address/validate:
    get:
      tags:
        - Address
      summary: Validate an address
      description: >-
        Find the best G-NAF match for a submitted address string and classify
        request match quality. Use `prontiqMatchScore` and `prontiqMatchQuality`
        for acceptance thresholds and user prompts. If `match` is present,
        `match.confidence` is separate G-NAF source-record metadata for the
        address record.
      operationId: validateAddress
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 500
            description: >-
              Free-text address to validate against G-NAF. Include suburb,
              state, and postcode when available for the strongest match signal.
            example: 9 endeavour court lammermoor qld 4703
          required: true
          description: >-
            Free-text address to validate against G-NAF. Include suburb, state,
            and postcode when available for the strongest match signal.
          name: q
          in: query
        - schema:
            $ref: '#/components/schemas/AddressDebugQuery'
          required: false
          description: >-
            Optional diagnostic flag. Send exactly `true` or `false`. Invalid
            values are rejected; debug diagnostics are for support only and must
            not be used for business decisions.
          name: debug
          in: query
      responses:
        '200':
          description: >-
            Best address match, or `match: null` when the input does not resolve
            cleanly.
          headers:
            X-Request-Id:
              description: Unique request identifier for support and debugging.
              schema:
                type: string
            X-RateLimit-Product:
              description: >-
                API family whose monthly credit counter was updated, for example
                `address`.
              schema:
                type: string
            X-RateLimit-Reset:
              description: ISO timestamp when the current credit window resets.
              schema:
                type: string
                format: date-time
            X-RateLimit-Limit:
              description: >-
                Configured included-credit threshold for keys with a monthly
                quota. Present for hard-cap and soft-overage plans; omitted for
                PAYG or uncapped plans.
              schema:
                type: integer
                minimum: 0
            X-RateLimit-Remaining:
              description: >-
                Included credits remaining in the current window, floored at
                zero. Present for hard-cap and soft-overage plans; omitted for
                PAYG or uncapped plans.
              schema:
                type: integer
                minimum: 0
            X-RateLimit-Over:
              description: >-
                `true` when the request succeeded as soft-overage after included
                credits were exceeded.
              schema:
                type: string
                enum:
                  - 'true'
            X-Payment-Overdue:
              description: >-
                Indicates whether the account currently has an overdue billing
                state. Request handling still follows the active plan
                enforcement policy.
              schema:
                type: string
                enum:
                  - 'true'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateAddressResponse'
              example:
                match:
                  id: GAQLD156786950
                  addressLabel: 9 ENDEAVOUR COURT
                  localityName: LAMMERMOOR
                  state: QLD
                  postcode: '4703'
                  confidence: 2
                  geocode:
                    latitude: -23.1601
                    longitude: 150.7596
                    type: PROPERTY CENTROID
                    reliability: 2
                  location:
                    lat: -23.1601
                    lon: 150.7596
                  boundaries:
                    lga:
                      name: Livingstone Shire
                    stateElectorate:
                      name: Keppel
                    commonwealthElectorate:
                      name: Capricornia
                    meshBlock:
                      code: '30000000000'
                      category: Residential
                    sa2:
                      name: Yeppoon
                      code: '308011188'
                    sa3:
                      name: Rockhampton
                      code: '30801'
                    sa4:
                      name: Central Queensland
                      code: '308'
                prontiqMatchScore: 92
                prontiqMatchQuality: high
        '400':
          description: >-
            The request query string is missing a required parameter or contains
            a value outside the documented format.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressErrorResponse'
              example:
                error:
                  code: INVALID_PARAMETERS
                  message: Invalid query parameters
                  status: 400
                  request_id: req_01HZX7A8J5K9P4R2QW3E6T7Y8Z
                  details:
                    q:
                      - Required
        '401':
          description: The request did not include a valid `X-Api-Key` header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressErrorResponse'
              example:
                error:
                  code: MISSING_API_KEY
                  message: Missing X-Api-Key header
                  status: 401
                  request_id: req_01HZX7A8J5K9P4R2QW3E6T7Y8Z
        '403':
          description: >-
            The API key is valid, but the account plan does not include the
            Address API product.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressErrorResponse'
              example:
                error:
                  code: PRODUCT_NOT_ALLOWED
                  message: Product not included in your plan
                  status: 403
                  request_id: req_01HZX7A8J5K9P4R2QW3E6T7Y8Z
        '429':
          description: >-
            The request exceeded burst rate limits or the account's available
            Address API quota.
          headers:
            Retry-After:
              description: >-
                Seconds to wait before retrying when error.code is RATE_LIMITED.
                Quota exhaustion responses may omit this header.
              schema:
                type: integer
                minimum: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressErrorResponse'
              example:
                error:
                  code: RATE_LIMITED
                  message: Rate limit exceeded
                  status: 429
                  request_id: req_01HZX7A8J5K9P4R2QW3E6T7Y8Z
        '500':
          description: >-
            The API could not complete the request because of an unexpected
            server-side failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressErrorResponse'
              example:
                error:
                  code: INTERNAL_ERROR
                  message: Internal server error
                  status: 500
                  request_id: req_01HZX7A8J5K9P4R2QW3E6T7Y8Z
      security:
        - ApiKeyAuth: []
components:
  schemas:
    AddressDebugQuery:
      type: string
      enum:
        - 'true'
        - 'false'
      description: >-
        Optional diagnostic flag. Send exactly `true` or `false`. Invalid values
        are rejected; debug diagnostics are for support only and must not be
        used for business decisions.
      example: 'false'
    ValidateAddressResponse:
      type: object
      properties:
        match:
          anyOf:
            - $ref: '#/components/schemas/AddressDocument'
            - type: 'null'
          description: >-
            Best matching full address document, or `null` when the submitted
            address does not resolve to a usable G-NAF record.
        prontiqMatchScore:
          type: integer
          minimum: 0
          maximum: 100
          description: >-
            Prontiq-computed request match score from 0 to 100. Use it to decide
            whether to accept the match, ask the user to confirm, or request
            correction.
          example: 92
        prontiqMatchQuality:
          type: string
          enum:
            - high
            - medium
            - low
            - none
          description: >-
            Human-readable Prontiq match-quality bucket derived from
            `prontiqMatchScore`. This is distinct from `match.confidence`, which
            is G-NAF source-record metadata.
          example: high
        debug:
          $ref: '#/components/schemas/DebugInfo'
      required:
        - match
        - prontiqMatchScore
        - prontiqMatchQuality
      description: >-
        Best address match and Prontiq match-quality classification for a
        submitted address string.
    AddressErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              $ref: '#/components/schemas/AddressErrorCode'
            message:
              type: string
              description: Human-readable error message.
              example: Invalid query parameters
            status:
              type: integer
              description: HTTP status code.
              example: 400
            request_id:
              type: string
              description: >-
                Request identifier for support and debugging. This snake_case
                field is stable in v1.
              example: req_01HZX7A8J5K9P4R2QW3E6T7Y8Z
            details:
              type: object
              additionalProperties: {}
              description: Optional structured details. Shape depends on the error code.
              example:
                q:
                  - Required
          required:
            - code
            - message
            - status
            - request_id
          description: >-
            Nested error object containing the machine code, human message, HTTP
            status, and request id.
          example:
            code: INVALID_PARAMETERS
            message: Invalid query parameters
            status: 400
            request_id: req_01HZX7A8J5K9P4R2QW3E6T7Y8Z
      required:
        - error
      description: >-
        Standard public Address API error envelope. The nested
        `error.request_id` field is intentionally snake_case in v1.
    AddressDocument:
      type: object
      properties:
        id:
          type: string
          description: >-
            Opaque G-NAF persistent identifier for this address record. Store it
            as a string and pass it to Enrich when you need the full public
            address document.
          example: GAQLD156786950
        addressLabel:
          anyOf:
            - type: string
              description: >-
                Formatted street-address line for display and form population.
                It usually contains the street number, street name, and any unit
                or building text available in the source record.
              example: 9 ENDEAVOUR COURT
            - type: 'null'
        localityName:
          anyOf:
            - type: string
              description: Official suburb or locality name associated with the address.
              example: LAMMERMOOR
            - type: 'null'
        state:
          anyOf:
            - $ref: '#/components/schemas/AustralianStateCode'
            - type: 'null'
        postcode:
          anyOf:
            - $ref: '#/components/schemas/Postcode'
            - type: 'null'
        confidence:
          anyOf:
            - $ref: '#/components/schemas/GnafConfidence'
            - type: 'null'
        geocode:
          anyOf:
            - $ref: '#/components/schemas/Geocode'
            - type: 'null'
        location:
          anyOf:
            - $ref: '#/components/schemas/Location'
            - type: 'null'
        boundaries:
          anyOf:
            - $ref: '#/components/schemas/AddressBoundaries'
            - type: 'null'
      required:
        - id
      description: >-
        Standard public address record returned by Validate and Reverse geocode,
        and used as the base for Enrich. Optional fields may be absent or null
        when the source data does not provide that attribute.
      example:
        id: GAQLD156786950
        addressLabel: 9 ENDEAVOUR COURT
        localityName: LAMMERMOOR
        state: QLD
        postcode: '4703'
        confidence: 2
    DebugInfo:
      type: object
      properties:
        scoringVersion:
          type: string
          enum:
            - address-match-v1
          description: >-
            Version of the public Prontiq match-scoring algorithm used for
            diagnostics.
          example: address-match-v1
        queryMode:
          type: string
          enum:
            - autocomplete
            - validate
            - enrich
            - reverse
            - lookup
          description: Address API operation mode that produced this diagnostic object.
          example: autocomplete
        matchedComponents:
          type: object
          additionalProperties:
            type: string
            enum:
              - exact
              - prefix
              - fuzzy
              - none
          description: >-
            Per-component match classification for diagnostics. Shape may evolve
            between scoring versions.
          example:
            streetNumber: exact
            streetName: prefix
            locality: exact
        scoreCaps:
          type: array
          items:
            type: string
          description: >-
            Diagnostic list of caps applied to the score, such as explicit
            postcode or state mismatches.
          example:
            - explicitPostcodeMismatch
        searchScore:
          type: number
          description: >-
            Internal search relevance score when available. This value is
            unstable and must not be stored, sorted by, or used for business
            decisions.
          format: double
          example: 42.1
      required:
        - scoringVersion
        - queryMode
      description: >-
        Optional diagnostic metadata returned only when `debug=true` is
        supplied. Debug values are for support and troubleshooting, not
        production decision-making.
      example:
        scoringVersion: address-match-v1
        queryMode: autocomplete
        searchScore: 42.1
    AddressErrorCode:
      type: string
      enum:
        - INVALID_API_KEY
        - MISSING_API_KEY
        - RATE_LIMITED
        - QUOTA_EXCEEDED
        - PRODUCT_NOT_ALLOWED
        - INVALID_PARAMETERS
        - NOT_FOUND
        - INTERNAL_ERROR
      description: >-
        Stable machine-readable public Address API error code. Use this value
        for branching instead of parsing the human-readable `message`.
      example: INVALID_PARAMETERS
    AustralianStateCode:
      type: string
      enum:
        - NSW
        - VIC
        - QLD
        - SA
        - WA
        - TAS
        - NT
        - ACT
      description: >-
        Uppercase Australian state or territory code returned by the Address
        API. Allowed values are `NSW` New South Wales, `VIC` Victoria, `QLD`
        Queensland, `SA` South Australia, `WA` Western Australia, `TAS`
        Tasmania, `NT` Northern Territory, and `ACT` Australian Capital
        Territory.
      example: QLD
    Postcode:
      type: string
      pattern: ^\d{4}$
      description: >-
        Four-digit Australian postcode. Store postcodes as strings; integer
        coercion can remove leading zeroes used by some Australian postcodes.
      example: '4703'
    GnafConfidence:
      type: integer
      minimum: -1
      maximum: 2
      description: >-
        G-NAF source-record confidence metadata. `-1` represents a retired
        record; `0`, `1`, and `2` indicate one, two, or three supporting
        contributor datasets. This is provenance metadata, not Prontiq match
        quality.
      example: 2
      x-field-note: >-
        This is G-NAF source-record confidence, not `prontiqMatchScore` or
        `prontiqMatchQuality`. Autocomplete suggestions do not expose this
        field.
    Geocode:
      type: object
      properties:
        latitude:
          $ref: '#/components/schemas/Coordinate'
        longitude:
          $ref: '#/components/schemas/Coordinate'
        type:
          anyOf:
            - type: string
              description: >-
                G-NAF geocoding method when supplied by the source record, such
                as a frontage, property centroid, or locality-level point.
              example: PROPERTY CENTROID
            - type: 'null'
        reliability:
          anyOf:
            - type: integer
              minimum: 0
              maximum: 6
              description: >-
                G-NAF geocode reliability code from 0 to 6, where lower values
                indicate more precise location evidence. Treat this as geocode
                precision metadata, not address match quality.
              example: 2
              x-field-note: >-
                Lower is better: a smaller reliability number indicates a more
                precise geocode.
            - type: 'null'
      required:
        - latitude
        - longitude
      description: G-NAF geocoding metadata and decimal-degree coordinates for the address.
      example:
        latitude: -23.1601
        longitude: 150.7596
        type: PROPERTY CENTROID
        reliability: 2
    Location:
      type: object
      properties:
        lat:
          $ref: '#/components/schemas/Coordinate'
        lon:
          $ref: '#/components/schemas/Coordinate'
      required:
        - lat
        - lon
      description: >-
        Compact latitude/longitude point used for proximity workflows and map
        display.
      example:
        lat: -23.1601
        lon: 150.7596
    AddressBoundaries:
      type: object
      properties:
        lga:
          anyOf:
            - $ref: '#/components/schemas/NamedArea'
            - type: 'null'
        stateElectorate:
          anyOf:
            - $ref: '#/components/schemas/NamedArea'
            - type: 'null'
        commonwealthElectorate:
          anyOf:
            - $ref: '#/components/schemas/NamedArea'
            - type: 'null'
        meshBlock:
          anyOf:
            - $ref: '#/components/schemas/MeshBlock'
            - type: 'null'
        sa2:
          anyOf:
            - $ref: '#/components/schemas/NamedArea'
            - type: 'null'
        sa3:
          anyOf:
            - $ref: '#/components/schemas/NamedArea'
            - type: 'null'
        sa4:
          anyOf:
            - $ref: '#/components/schemas/NamedArea'
            - type: 'null'
        gccsa:
          anyOf:
            - $ref: '#/components/schemas/NamedArea'
            - type: 'null'
      description: >-
        Administrative, electoral, and ABS statistical geography linked to the
        address when supplied by G-NAF and ABS source data. Boundary values can
        change between official data releases without the address `id` changing.
      example:
        lga:
          name: Livingstone Shire
        stateElectorate:
          name: Keppel
        commonwealthElectorate:
          name: Capricornia
        meshBlock:
          code: '30000000000'
          category: Residential
        sa2:
          name: Yeppoon
          code: '308011188'
        sa3:
          name: Rockhampton
          code: '30801'
        sa4:
          name: Central Queensland
          code: '308'
    Coordinate:
      type: number
      description: >-
        WGS84 decimal-degree coordinate used for Australian address locations
        and reverse-geocode queries.
      format: double
      example: -23.1601
    NamedArea:
      type: object
      properties:
        name:
          type: string
          description: Official administrative, electoral, or statistical area name.
          example: Yeppoon
        code:
          anyOf:
            - type: string
              description: >-
                Official ABS, electoral, or administrative area code when
                supplied by the source dataset.
              example: '308011188'
            - type: 'null'
      required:
        - name
      description: >-
        Named administrative, electoral, or statistical area associated with an
        address.
      example:
        name: Yeppoon
        code: '308011188'
    MeshBlock:
      type: object
      properties:
        code:
          type: string
          description: >-
            ABS Mesh Block code. Mesh Blocks are the smallest Australian Bureau
            of Statistics geographic areas used to build larger statistical
            regions.
          example: '30000000000'
        category:
          anyOf:
            - type: string
              description: >-
                ABS Mesh Block land-use category when available, such as
                Residential, Commercial, Parkland, or Education.
              example: Residential
            - type: 'null'
      required:
        - code
      description: >-
        ABS Mesh Block identifier and optional land-use category for the address
        location.
      example:
        code: '30000000000'
        category: Residential
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key

````