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

# Get document type details

> Get the full schema definition for a document type.

Returns the active schema version with all field definitions, validation
rules, and extraction hints. Use this to understand what fields will be
extracted from a document of this type.

Field severities:
- **hard**: Extraction fails if field is missing or invalid
- **soft**: Warning only, extraction continues

Validation rules define cross-field constraints (e.g., amounts should sum).



## OpenAPI

````yaml openapi.json get /v1/document-types/{code}
openapi: 3.1.0
info:
  title: DocIntell API
  description: >-

    # DocIntell API


    **Turn Documents into Data. Keep the Source Safe.**


    Financial document intelligence platform that turns PDFs into queryable data
    while keeping source files secure and compliant.


    ## Features


    - **Document Ingestion**: Upload PDFs with SEC 17a-4 compliant immutable
    storage

    - **Schema Projection**: Query extracted data with custom schemas (not data
    dumps!)

    - **Multi-Schema Support**: Same document, multiple query patterns

    - **Webhook Delivery**: Async notifications on job completion

    - **Row-Level Security**: Multi-tenant isolation built-in


    ## Authentication


    All API endpoints (except `/health`, `/`, `/docs`, and `/redoc`) require API
    key authentication.


    Include your API key in the `Authorization` header:


    ```

    Authorization: Bearer dk_live_<your_key>

    ```


    Test keys start with `dk_test_`, production keys with `dk_live_`.


    ## Rate Limiting


    Per-tenant rate limits:

    - **Document ingestion**: 100 documents/hour

    - **Projection queries**: 1,000 requests/hour

    - **Schema operations**: 10 creates/hour


    Rate limit info is returned in response headers:

    - `X-RateLimit-Limit`: Maximum requests allowed

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

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


    ## Error Handling


    All errors follow RFC 7807 Problem Details format:


    ```json

    {
      "error": "error_code",
      "message": "Human-readable description",
      "details": {}
    }

    ```


    Common error codes:

    - `unauthorized` (401): Missing or invalid API key

    - `rate_limit_exceeded` (429): Too many requests

    - `invalid_file_type` (400): Only PDFs supported

    - `file_too_large` (413): File exceeds size limit (default 100MB,
    configurable via MAX_UPLOAD_SIZE_MB)

    - `job_not_found` (404): Job ID doesn't exist or doesn't belong to tenant


    ## Getting Started


    1. Obtain API key from dashboard

    2. Upload PDF: `POST /v1/documents`

    3. Poll status: `GET /v1/documents/{document_id}/status`

    4. Query results: `POST /v1/documents/{document_id}/project`


    Full documentation: [https://docs.docintel.com](https://docs.docintel.com)
        
  contact:
    name: DocIntell Support
    url: https://docintel.com/support
    email: support@docintel.com
  license:
    name: Proprietary
    url: https://docintel.com/terms
  version: 0.1.0
servers:
  - url: http://localhost:8000
    description: Local development
  - url: https://api.docintell.com
    description: Production API
  - url: https://api-staging.docintell.com
    description: Staging environment
security:
  - bearerAuth: []
tags:
  - name: health
    description: Health check operations. Verify service and dependency connectivity.
    x-mint-tag-group: System
  - name: api_keys
    description: API key management operations. Create, list, and revoke API keys.
    x-mint-tag-group: Management
  - name: documents
    description: Document ingestion operations. Upload PDFs for extraction.
    x-mint-tag-group: Core
  - name: jobs
    description: >-
      Job status and query operations. Check extraction status and query
      results.
    x-mint-tag-group: Core
  - name: document-types
    description: >-
      Document type schemas. List and retrieve extraction schema definitions for
      financial document types.
  - name: webhooks
    description: >-
      Webhook configuration management. Create, update, and manage webhook
      endpoints for job completion notifications.
    x-mint-tag-group: Integrations
  - name: stats
    description: Analytics and metrics endpoints. Get document, job, and schema statistics.
  - name: views
    description: >-
      View management for consumption layer. Define field subsets for querying
      extraction data.
paths:
  /v1/document-types/{code}:
    get:
      tags:
        - document-types
      summary: Get document type details
      description: >-
        Get the full schema definition for a document type.


        Returns the active schema version with all field definitions, validation

        rules, and extraction hints. Use this to understand what fields will be

        extracted from a document of this type.


        Field severities:

        - **hard**: Extraction fails if field is missing or invalid

        - **soft**: Warning only, extraction continues


        Validation rules define cross-field constraints (e.g., amounts should
        sum).
      operationId: get_document_type_v1_document_types__code__get
      parameters:
        - name: code
          in: path
          required: true
          schema:
            type: string
            description: Document type code (e.g., 'capital_call', 'k1')
            title: Code
          description: Document type code (e.g., 'capital_call', 'k1')
          example: capital_call
      responses:
        '200':
          description: Full schema definition with fields and validations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentTypeDetailResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    DocumentTypeDetailResponse:
      properties:
        code:
          type: string
          title: Code
          description: Unique document type code
        name:
          type: string
          title: Name
          description: Human-readable name
        category:
          type: string
          title: Category
          description: Document category
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Brief description
        schema_version:
          type: string
          title: Schema Version
          description: Active schema version
        fields:
          items:
            $ref: '#/components/schemas/SchemaFieldResponse'
          type: array
          title: Fields
          description: List of field definitions
        validations:
          items:
            $ref: '#/components/schemas/SchemaValidationResponse'
          type: array
          title: Validations
          description: Cross-field validation rules
      type: object
      required:
        - code
        - name
        - category
        - schema_version
        - fields
        - validations
      title: DocumentTypeDetailResponse
      description: |-
        Response for document type detail (GET /v1/document-types/{code}).

        Includes the full schema with all fields and validations.
      examples:
        - category: fund_operations
          code: capital_call
          description: Capital call notices from fund managers
          fields:
            - description: Name of the fund
              field_name: fund_name
              field_type: string
              hints:
                - Fund Name
                - Partnership Name
              is_nullable: false
              severity: hard
          name: Capital Call Notice
          schema_version: 1.0.0
          validations:
            - formula: call_amount_lp ≈ call_amount_fund × ownership %
              message: LP call amount should match calculation
              name: lp_amount_calculation
              severity: soft
              tolerance: 0.01
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SchemaFieldResponse:
      properties:
        field_name:
          type: string
          title: Field Name
          description: Name of the field (snake_case)
        field_type:
          type: string
          title: Field Type
          description: Data type (string, decimal, date, boolean, etc.)
        severity:
          type: string
          enum:
            - hard
            - soft
          title: Severity
          description: >-
            Validation severity (hard = extraction fails if missing, soft =
            warning)
        is_nullable:
          type: boolean
          title: Is Nullable
          description: Whether the field can be null
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Human-readable field description
        pattern:
          anyOf:
            - type: string
            - type: 'null'
          title: Pattern
          description: Regex validation pattern
        hints:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Hints
          description: Extraction hints for LLM
      type: object
      required:
        - field_name
        - field_type
        - severity
        - is_nullable
      title: SchemaFieldResponse
      description: Schema field definition for extraction.
      examples:
        - description: Capital call amount for the limited partner
          field_name: call_amount_lp
          field_type: decimal
          hints:
            - Capital Call Amount
            - LP Call Amount
            - Amount Due
          is_nullable: false
          severity: hard
    SchemaValidationResponse:
      properties:
        name:
          type: string
          title: Name
          description: Validation rule name
        severity:
          type: string
          enum:
            - hard
            - soft
          title: Severity
          description: Validation severity
        message:
          type: string
          title: Message
          description: Error message when validation fails
        formula:
          anyOf:
            - type: string
            - type: 'null'
          title: Formula
          description: Human-readable formula
        tolerance:
          anyOf:
            - type: number
            - type: 'null'
          title: Tolerance
          description: Numeric tolerance for comparisons
      type: object
      required:
        - name
        - severity
        - message
      title: SchemaValidationResponse
      description: Cross-field validation rule.
      examples:
        - formula: call_amount_lp ≈ call_amount_fund × lp_ownership_percentage / 100
          message: LP call amount should equal fund call × ownership %
          name: lp_amount_calculation
          severity: soft
          tolerance: 0.01
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: 'API Key authentication. Format: dk_test_<key> or dk_live_<key>'

````