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

# Resolve a search's match

> Resolve which registry result a search refers to — the same choice an
analyst makes in Current.

Use this when a search comes back with `matchSelection.status` of
`needs_review` (or `no_match_found`). Either:

- POST a `matchId` from the search's `businesses[]` to pick that entity —
  the search flips to `selected`, and its comparison and discrepancy
  counts are recomputed against the result you chose; or
- POST a `status` of `no_match_found` or `no_selection` to mark the
  search as not proceeding (e.g. the only hit is an inactive entity).

Both are reversible — POST a `matchId` later to pick a result.

Requires match selection to be enabled for the search (via the
`matchSelection` request flag or your account's search settings).




## OpenAPI

````yaml /openapi.yaml post /search/{id}/selection
openapi: 3.1.0
info:
  title: Current Business Verification API
  version: 1.0.0
  description: >
    The Current API provides programmatic access to Canadian business
    verification services.


    ## Authentication

    All API requests require authentication via API key. Include your key using
    one of these methods:

    - `Authorization: Bearer cur_live_xxxxx` (recommended)

    - `X-API-Key: cur_live_xxxxx`


    ## Rate Limits

    All endpoints are rate limited to **60 requests per minute** per API key.


    Rate limit headers are included in all responses:

    - `X-RateLimit-Limit`: Maximum requests allowed in current window

    - `X-RateLimit-Remaining`: Remaining requests in current window

    - `X-RateLimit-Reset`: Unix timestamp when the rate limit resets


    ## Request IDs

    All responses include an `X-Request-Id` header for traceability.

    You can provide your own via the `X-Request-Id` request header; otherwise
    one is generated automatically.

    Include this ID when contacting support about a specific request.
  contact:
    name: Current Support
    url: https://getcurrent.ca
  license:
    name: Proprietary
servers:
  - url: https://api.getcurrent.ca/v1
    description: Production
security:
  - bearerAuth: []
  - apiKeyHeader: []
tags:
  - name: Search
    description: Business verification search operations
  - name: Pre-fill
    description: Fast typeahead lookup of canonical business candidates
  - name: Generate PDF
    description: PDF report generation
  - name: Business Reports
    description: Business report operations
  - name: Sanctions
    description: Standalone sanctions screening operations
  - name: Verification
    description: Business verification operations
  - name: Businesses
    description: >-
      Business record sync (list/read as a change feed, upsert to keep records
      current)
paths:
  /search/{id}/selection:
    post:
      tags:
        - Search
      summary: Resolve a search's match
      description: >
        Resolve which registry result a search refers to — the same choice an

        analyst makes in Current.


        Use this when a search comes back with `matchSelection.status` of

        `needs_review` (or `no_match_found`). Either:


        - POST a `matchId` from the search's `businesses[]` to pick that entity
        —
          the search flips to `selected`, and its comparison and discrepancy
          counts are recomputed against the result you chose; or
        - POST a `status` of `no_match_found` or `no_selection` to mark the
          search as not proceeding (e.g. the only hit is an inactive entity).

        Both are reversible — POST a `matchId` later to pick a result.


        Requires match selection to be enabled for the search (via the

        `matchSelection` request flag or your account's search settings).
      operationId: selectSearchMatch
      parameters:
        - name: id
          in: path
          required: true
          description: Search ID (UUID)
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MatchSelectionRequest'
            examples:
              pickMatch:
                summary: Pick a result
                value:
                  matchId: 8f14e45f-ceea-467a-9f8e-2bd1f3a1c7d2
              markNotProceeding:
                summary: Mark not proceeding
                value:
                  status: no_selection
      responses:
        '200':
          description: Match selected
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatchSelectionResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidId:
                  summary: Malformed search id
                  value:
                    error: Invalid search ID format
                missingIntent:
                  summary: Neither or both of matchId / status
                  value:
                    error: >-
                      Provide exactly one of "matchId" (to pick a candidate) or
                      "status" (no_match_found | no_selection)
                badStatus:
                  summary: Unknown status value
                  value:
                    error: 'status must be one of: no_match_found, no_selection'
                unknownMatchId:
                  summary: matchId does not belong to this search
                  value:
                    error: matchId is not a match of this search
                    code: MATCH_NOT_FOUND
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Search not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error: Search not found
                code: SEARCH_NOT_FOUND
        '429':
          $ref: '#/components/responses/RateLimited'
      security:
        - bearerAuth: []
        - apiKeyHeader: []
components:
  schemas:
    MatchSelectionRequest:
      type: object
      description: >
        Provide exactly one of `matchId` (pick a result) or `status` (mark the
        search as not proceeding).
      oneOf:
        - required:
            - matchId
        - required:
            - status
      properties:
        matchId:
          type: string
          minLength: 1
          description: >
            The `matchId` of the result to select, taken from this search's
            `businesses[]`. Flips the search to `selected`.
          example: 8f14e45f-ceea-467a-9f8e-2bd1f3a1c7d2
        status:
          type: string
          enum:
            - no_match_found
            - no_selection
          description: >
            Mark the search as not proceeding — `no_match_found` (none of the
            results is the entity) or `no_selection` (reviewed, not moving
            forward with any). Reversible by later POSTing a `matchId`.
    MatchSelectionResponse:
      type: object
      required:
        - matchSelection
      properties:
        matchSelection:
          type: object
          required:
            - status
            - selectedMatchId
          properties:
            status:
              type: string
              enum:
                - selected
                - no_match_found
                - no_selection
              description: >
                The search's new state — `selected` when a `matchId` was picked,
                or `no_match_found` / `no_selection` for the matching `status`.
            selectedMatchId:
              type:
                - string
                - 'null'
              description: >
                The `matchId` that is now the search's selected match, or null
                for a `no_match_found` / `no_selection` outcome.
              example: 8f14e45f-ceea-467a-9f8e-2bd1f3a1c7d2
    ErrorResponse:
      type: object
      required:
        - error
        - code
      properties:
        error:
          type: string
          description: Human-readable error message
        code:
          type: string
          description: >
            Machine-readable error code. Present on every error response.
            Distinct from the per-source `APIError.code` values that appear
            inside a successful response's `meta.errors` object.
          enum:
            - MISSING_API_KEY
            - INVALID_API_KEY
            - REVOKED_API_KEY
            - EXPIRED_API_KEY
            - RATE_LIMITED
            - VALIDATION_ERROR
            - INVALID_JSON
            - NOT_FOUND
            - STALE_WRITE
            - CONFLICT
            - METHOD_NOT_ALLOWED
            - UNAUTHORIZED
            - SERVER_ERROR
            - INTERNAL_ERROR
          example: VALIDATION_ERROR
  headers:
    X-Request-Id:
      description: >-
        Unique request identifier for traceability. Echoes client-provided value
        or auto-generated UUID.
      schema:
        type: string
        format: uuid
        example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
    X-RateLimit-Limit:
      description: Maximum requests per minute
      schema:
        type: integer
        example: 60
    X-RateLimit-Remaining:
      description: Remaining requests in current window
      schema:
        type: integer
        example: 58
    X-RateLimit-Reset:
      description: Unix timestamp when rate limit resets
      schema:
        type: integer
        example: 1702915200
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missing:
              value:
                error: >-
                  Missing API key. Provide via Authorization: Bearer <key> or
                  X-API-Key header.
                code: MISSING_API_KEY
            invalid:
              value:
                error: Invalid API key
                code: INVALID_API_KEY
            revoked:
              value:
                error: API key has been revoked
                code: REVOKED_API_KEY
            expired:
              value:
                error: API key has expired
                code: EXPIRED_API_KEY
    RateLimited:
      description: Rate limit exceeded
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          schema:
            type: integer
            example: 0
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
        Retry-After:
          description: Seconds until rate limit resets
          schema:
            type: integer
            example: 60
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: Rate limit exceeded. Try again in 60 seconds.
            code: RATE_LIMITED
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key as Bearer token: `Authorization: Bearer cur_live_xxxxx`'
    apiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'API key in header: `X-API-Key: cur_live_xxxxx`'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.