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

# Look up a business

> A business's full CAC record: registered name, status, registration date, address, email and its
officers (proprietors, directors, secretaries and persons with significant control). Charged from your
wallet (see `amount_charged`); not when CAC has no business with the number. Test keys return the same
made-up business for every number.



## OpenAPI

````yaml /openapi.json post /businesses/lookups
openapi: 3.1.0
info:
  title: FastCAC API
  description: Register Nigerian businesses with CAC from your own product.
  version: '2026-11-01'
servers:
  - url: https://api.fastcac.com/v1
security:
  - apiKey: []
tags:
  - name: Account
    description: Check your key and see your organization.
  - name: Names
    description: >-
      Check a business name against CAC's rules and registry, and the categories
      it takes, before registering it.
  - name: Registrations
    description: Register a Business Name with CAC, from draft to certificate.
  - name: Lookup
    description: >-
      Search CAC's register for free, and look up a business's full record with
      its officers.
  - name: Verification
    description: >-
      Check that a business your applicant names is real, active and run by the
      people they say.
  - name: Monitoring
    description: >-
      Watch businesses on CAC's register and get an event when one goes inactive
      or changes name.
  - name: Identities
    description: >-
      Look up a proprietor's NIN with NIMC, to prefill a registration and use
      their photo.
  - name: Balance
    description: >-
      Your prepaid wallet: what's available, its transactions and your funding
      account.
  - name: Test helpers
    description: >-
      Test keys only: move a registration on without waiting, or simulate a
      deposit.
  - name: Webhooks
    description: Endpoints that receive events, and the events sent to them.
  - name: Webhook events
    description: What FastCAC POSTs to your webhook endpoints.
paths:
  /businesses/lookups:
    post:
      tags:
        - Lookup
      summary: Look up a business
      description: >-
        A business's full CAC record: registered name, status, registration
        date, address, email and its

        officers (proprietors, directors, secretaries and persons with
        significant control). Charged from your

        wallet (see `amount_charged`); not when CAC has no business with the
        number. Test keys return the same

        made-up business for every number.
      operationId: create_cac_lookup_businesses_lookups_post
      parameters:
        - name: simulate
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Test keys only: cac_record_missing (404), lookup_unavailable (503)
              or insufficient_balance (402). Ignored with a live key.
            title: Simulate
          description: >-
            Test keys only: cac_record_missing (404), lookup_unavailable (503)
            or insufficient_balance (402). Ignored with a live key.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CacLookupIn'
            example:
              number: RC 7654321
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1CacLookup'
              examples:
                Example:
                  value:
                    object: cac_lookup
                    id: cacl_7d33or8TF86voj7RKlJoO9
                    number: '7654321'
                    type: RC
                    type_label: Company
                    name: ADA FOODS LIMITED
                    status: ACTIVE
                    active: true
                    registered_on: '2024-03-18'
                    address: 12 ADMIRALTY WAY, LEKKI, LAGOS
                    email: hello@adafoods.ng
                    officers:
                      - name: ADA CHIOMA OBI
                        role: director
                        status: active
                        nationality: NIGERIAN
                        appointed_on: '2024-03-18'
                    amount_charged: '250.00'
                    transaction_id: wtx_1wXWimpHA9SSUHix3GJGug
                    created_at: '2026-10-28T15:16:03Z'
        '400':
          description: The request is invalid; `param` names the field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                Example:
                  value:
                    error:
                      type: invalid_request_error
                      code: parameter_invalid
                      message: >-
                        Send the registration number, such as 8911267 or RC
                        8911267.
                      param: number
                      request_id: req_aGvSVZl80De8ChnYjNZZSXLu
        '401':
          description: The API key is missing, malformed, revoked or expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                Example:
                  value:
                    error:
                      type: authentication_error
                      code: api_key_missing
                      message: 'Send your API key as `Authorization: Bearer <key>`.'
                      param: null
                      request_id: req_8r9FEwNmLuxQORZX5Qhvkd0q
        '402':
          description: >-
            The wallet can't cover a lookup: `insufficient_balance`, with
            `details`. Nothing was charged or looked up.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1Error'
              examples:
                Example:
                  value:
                    error:
                      type: payment_error
                      code: insufficient_balance
                      message: >-
                        Your balance is ₦0.00; a business lookup costs ₦250.00.
                        Fund your wallet by bank transfer to your funding
                        account, then try again.
                      param: null
                      request_id: req_U4SSkl1lLCAxwSMr2nNLyFVT
                      details:
                        amount_due: '250.00'
                        balance: '0.00'
                        currency: NGN
                        funding_account:
                          account_number: '0000000000'
                          bank_name: TEST BANK
                          account_name: FastCAC - TEST MODE
        '403':
          description: >-
            The key can't do this (for example, a test helper called with a live
            key).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                Example:
                  value:
                    error:
                      type: permission_error
                      code: live_mode_unavailable
                      message: >-
                        Live registrations are paused right now. Use a test key
                        (fc_test_…) meanwhile.
                      param: null
                      request_id: req_Td9lI1vsT5ARzv0XD7RGS1tD
        '404':
          description: >-
            `cac_record_missing`: CAC has no business with that number. Not
            charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1Error'
              examples:
                Example:
                  value:
                    error:
                      type: not_found_error
                      code: cac_record_missing
                      message: >-
                        CAC has no business with that number. You weren't
                        charged.
                      param: number
                      request_id: req_xQTCy0n7jrUxXg1C4IUNZQql
        '409':
          description: >-
            The object's state doesn't allow this, or the Idempotency-Key was
            reused.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too many requests; wait for `Retry-After` seconds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: >-
            `cac_search_unavailable` or `lookup_unavailable`: CAC didn't answer.
            Not charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1Error'
              examples:
                Example:
                  value:
                    error:
                      type: api_error
                      code: lookup_unavailable
                      message: >-
                        CAC's records service is busy or down. You weren't
                        charged. Try again in a few minutes.
                      param: null
                      request_id: req_affNXDcLgqOfRMox5ojLQ4C9
components:
  schemas:
    CacLookupIn:
      properties:
        number:
          type: string
          title: Number
          description: >-
            The registration number, with or without its prefix: "8911267" or
            "RC 8911267".
        type:
          anyOf:
            - type: string
              enum:
                - BN
                - RC
                - IT
                - LP
                - LLP
            - type: 'null'
          title: Type
          description: >-
            The register. Needed only when the number is in more than one
            (`type_required`).
      type: object
      required:
        - number
      title: CacLookupIn
    V1CacLookup:
      properties:
        object:
          type: string
          const: cac_lookup
          title: Object
          default: cac_lookup
        id:
          type: string
          title: Id
          description: cacl_…
        number:
          type: string
          title: Number
        type:
          type: string
          enum:
            - BN
            - RC
            - IT
            - LP
            - LLP
          title: Type
        type_label:
          type: string
          title: Type Label
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: The registered name.
        status:
          anyOf:
            - type: string
            - type: 'null'
          title: Status
          description: 'As CAC lists it: ACTIVE, INACTIVE, STRUCK OFF and so on.'
        active:
          type: boolean
          title: Active
        registered_on:
          anyOf:
            - type: string
            - type: 'null'
          title: Registered On
          description: YYYY-MM-DD.
        address:
          anyOf:
            - type: string
            - type: 'null'
          title: Address
          description: The registered address as one line.
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
          description: The business's email on CAC's record, when there is one.
        officers:
          items:
            $ref: '#/components/schemas/V1CacOfficer'
          type: array
          title: Officers
          description: >-
            Proprietors, directors, secretaries and persons with significant
            control. Dates of birth, ID numbers, phones and home addresses are
            left out.
        amount_charged:
          anyOf:
            - type: string
            - type: 'null'
          title: Amount Charged
          description: What the lookup cost, in naira, as a decimal string.
        transaction_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Transaction Id
          description: The wtx_… cac_lookup_charge.
        created_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Created At
      type: object
      required:
        - id
        - number
        - type
        - type_label
        - name
        - status
        - active
        - registered_on
        - address
        - email
        - officers
        - amount_charged
        - transaction_id
        - created_at
      title: V1CacLookup
    Error:
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
      required:
        - error
      title: V1Error
      type: object
    V1Error:
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
      required:
        - error
      title: V1Error
      type: object
    V1CacOfficer:
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        role:
          type: string
          enum:
            - proprietor
            - director
            - secretary
            - psc
          title: Role
          description: psc is a person with significant control.
        status:
          anyOf:
            - type: string
            - type: 'null'
          title: Status
          description: As CAC lists it, lower case, such as "active".
        nationality:
          anyOf:
            - type: string
            - type: 'null'
          title: Nationality
        appointed_on:
          anyOf:
            - type: string
            - type: 'null'
          title: Appointed On
          description: YYYY-MM-DD, when CAC has it.
      type: object
      required:
        - name
        - role
        - status
        - nationality
        - appointed_on
      title: V1CacOfficer
    ErrorDetail:
      properties:
        type:
          type: string
          enum:
            - invalid_request_error
            - authentication_error
            - payment_error
            - permission_error
            - not_found_error
            - idempotency_error
            - rate_limit_error
            - api_error
          title: Type
        code:
          type: string
          title: Code
          description: Stable and machine-readable, e.g. registration_incomplete.
        message:
          type: string
          title: Message
          description: For a developer to read; may change.
        param:
          anyOf:
            - type: string
            - type: 'null'
          title: Param
          description: The parameter at fault, as a path like proprietors[0].nin.
        request_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Request Id
          description: Also in the FastCAC-Request-Id header. Quote it to support.
        details:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Details
          description: >-
            Only on some errors. A 402 insufficient_balance carries amount_due,
            balance, currency and funding_account (number, bank, name; null
            until it's active).
      type: object
      required:
        - type
        - code
        - message
        - param
        - request_id
      title: ErrorDetail
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: 'Your secret API key: fc_test_… in test mode, fc_live_… in live mode.'

````

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