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

# Calculate Title Fees

> Trigger fee calculation for a specific title entry

This endpoint initiates fee calculation for a title entry by publishing a fee calculation event and updating the job status to "enriching".

## Path Parameters

<ParamField path="id" type="string" required>
  The unique identifier of the title entry
</ParamField>

## Response

<ResponseField name="entryId" type="string">
  The ID of the title entry for which fees are being calculated
</ResponseField>

<ResponseField name="job_status" type="string">
  Updated job status, set to "enriching" after fee calculation is initiated
</ResponseField>

<RequestExample>
  ```bash theme={null}
  curl -X POST "https://api.cardinalgray.com/title/123e4567-e89b-12d3-a456-426614174000/fees" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "entryId": "123e4567-e89b-12d3-a456-426614174000",
    "job_status": "enriching"
  }
  ```
</ResponseExample>


## OpenAPI

````yaml POST /title/{id}/fees
openapi: 3.0.1
info:
  title: Cardinal Gray OpenAPI
  description: OpenAPI for automating vehicle title work
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.cardinalzyn.com
    description: Staging
  - url: https://api.cardinalgray.com
    description: Production
security:
  - bearerAuth: []
  - basicAuth: []
  - cookieAuth: []
paths:
  /title/{id}/fees:
    post:
      summary: Calculate fees for a title entry
      description: >-
        Initiates fee calculation for a title entry based on the vehicle and
        transaction details. Returns job status while fees are calculated
        asynchronously.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Unique identifier of the title entry
      responses:
        '200':
          $ref: 8d4c677c-fbcd-4a8b-bf37-c6deec2352d5
        '403':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
        - basicAuth: []
        - cookieAuth: []
components:
  responses:
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Response'
    NotFound:
      description: Not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Response'
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Response'
  schemas:
    Response:
      type: object
      properties:
        error:
          type: string
          description: Error message
        statusCode:
          type: number
          description: >-
            HTTP status code. Present on selected success responses, such as
            DELETE /title/{id}.
        disallowedFields:
          type: array
          items:
            type: string
          description: >-
            Fields rejected by PATCH /title/{id} when attempting to modify
            restricted top-level fields
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key or Clerk JWT supplied as Authorization: Bearer <token>'
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Legacy API key authentication supplied with Authorization: Basic
        <api_key>
    cookieAuth:
      type: apiKey
      in: cookie
      name: __session
      description: Clerk session cookie authentication

````