Robin | Robin API

Robin API

Powerful API, enabling seamless access to structured data that’s been extracted from complex legal documents.

Header API

 With flexibility across all contract types and legal documents, Robin transforms unstructured legal text into actionable, structured data, ready to integrate into your systems, workflows, and analytics tools.

Turn unstructured documents into structured, usable data at scale.

Scalable metadata extraction.

Extract key data points across thousands of documents with no limitations on contract types or data points.

Structured tables, ready to use.

Extracting data results in clean, structured objects, ideal for analysis, reporting, and process automation.

Plug-and-play API access.

Access extracted data programmatically via our API, enabling integration with CLM tools, CRMs, ERPs, BI dashboards, risk engines, and more.

Legal AI at enterprise scale.

Robin delivers unmatched accuracy, nuance, and domain-specific insight accompanied by clickable citations to verify information with pinpoint precision.

Our public API.


openapi: 3.1.0
info:
  title: Robin Legal Intelligence Platform API
  version: 0.2.0-dev
  description: API for the Robin Legal Intelligence Platform (LIP)
paths:
  /v1/tables:
    get:
      operationId: public_api_api_list_tables
      summary: List Tables
      parameters:
      - in: query
        name: limit
        schema:
          default: 100
          description: Maximum number of records to return
          exclusiveMinimum: 0
          maximum: 1000
          title: Limit
          type: integer
        required: false
        description: Maximum number of records to return
      - in: query
        name: starting_after
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Return records starting after this ID. Used for pagination.
          title: Starting After
        required: false
        description: Return records starting after this ID. Used for pagination.
      - in: query
        name: created_before
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created before this date
          title: Created Before
        required: false
        description: Return records created before this date
      - in: query
        name: created_after
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created after this date
          title: Created After
        required: false
        description: Return records created after this date
      - in: query
        name: updated_before
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated before this date
          title: Updated Before
        required: false
        description: Return records updated before this date
      - in: query
        name: updated_after
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated after this date
          title: Updated After
        required: false
        description: Return records updated after this date
      - in: query
        name: name
        schema:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter by names (case-insensitive partial match for multiple
            values)
          title: Name
        required: false
        description: Filter by names (case-insensitive partial match for multiple
          values)
      - in: query
        name: status
        schema:
          anyOf:
          - items:
              $ref: '#/components/schemas/TableBuildStatus'
            type: array
          - type: 'null'
          description: Filter tables by their status (e.g., "draft", "processing")
          title: Status
        required: false
        description: Filter tables by their status (e.g., "draft", "processing")
      - in: query
        name: group_id
        schema:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter tables by group ID(s) to only include tables from specific
            groups
          title: Group Id
        required: false
        description: Filter tables by group ID(s) to only include tables from specific
          groups
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTablesResponse'
      description: Retrieve a list of tables records.
      tags:
      - Tables
      security:
      - ApiKeyAuth: []
    post:
      operationId: public_api_api_create_table
      summary: Create Table
      parameters: []
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTableResponse'
      description: Create a new table from a template with specified documents
      tags:
      - Tables
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTableRequest'
        required: true
      security:
      - ApiKeyAuth: []
  /v1/tables/{table_id}:
    get:
      operationId: public_api_api_get_table
      summary: Get Table
      parameters:
      - in: path
        name: table_id
        schema:
          title: Table Id
          type: string
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTableResponse'
      description: Retrieve a specific table by its ID
      tags:
      - Tables
      security:
      - ApiKeyAuth: []
  /v1/tables/{table_id}/results:
    get:
      operationId: public_api_api_list_table_results
      summary: List Table Results
      parameters:
      - in: path
        name: table_id
        schema:
          title: Table Id
          type: string
        required: true
      - in: query
        name: limit
        schema:
          default: 100
          description: Maximum number of records to return
          exclusiveMinimum: 0
          maximum: 1000
          title: Limit
          type: integer
        required: false
        description: Maximum number of records to return
      - in: query
        name: starting_after
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Return records starting after this ID. Used for pagination.
          title: Starting After
        required: false
        description: Return records starting after this ID. Used for pagination.
      - in: query
        name: created_before
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created before this date
          title: Created Before
        required: false
        description: Return records created before this date
      - in: query
        name: created_after
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created after this date
          title: Created After
        required: false
        description: Return records created after this date
      - in: query
        name: updated_before
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated before this date
          title: Updated Before
        required: false
        description: Return records updated before this date
      - in: query
        name: updated_after
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated after this date
          title: Updated After
        required: false
        description: Return records updated after this date
      - in: query
        name: document_id
        schema:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter results by document ID(s) to only include results from
            specific documents
          title: Document Id
        required: false
        description: Filter results by document ID(s) to only include results from
          specific documents
      - in: query
        name: status
        schema:
          anyOf:
          - items:
              $ref: '#/components/schemas/ResultStatus'
            type: array
          - type: 'null'
          description: Filter results by their status (e.g., "pending", "completed")
          title: Status
        required: false
        description: Filter results by their status (e.g., "pending", "completed")
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResultsResponse'
      description: Retrieve a list of results from a specific table, with optional
        filters
      tags:
      - Tables
      security:
      - ApiKeyAuth: []
  /v1/tables/{table_id}/documents:
    post:
      operationId: public_api_api_add_documents_to_table
      summary: Add Documents To Table
      parameters:
      - in: path
        name: table_id
        schema:
          title: Table Id
          type: string
        required: true
      responses:
        '201':
          description: Created
      description: Add additional documents to an existing table before it is built
      tags:
      - Tables
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddDocumentsRequest'
        required: true
      security:
      - ApiKeyAuth: []
  /v1/tables/{table_id}/build:
    put:
      operationId: public_api_api_build_table
      summary: Build Table
      parameters:
      - in: path
        name: table_id
        schema:
          title: Table Id
          type: string
        required: true
      responses:
        '201':
          description: Created
      description: Start the build process for a table
      tags:
      - Tables
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              title: Payload
              type: object
        required: true
      security:
      - ApiKeyAuth: []
  /v1/tables/{table_id}/cancel:
    put:
      operationId: public_api_api_cancel_table
      summary: Cancel Table
      parameters:
      - in: path
        name: table_id
        schema:
          title: Table Id
          type: string
        required: true
      responses:
        '200':
          description: OK
      description: Cancel the build process for a table that is currently being built
      tags:
      - Tables
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              title: Payload
              type: object
        required: true
      security:
      - ApiKeyAuth: []
  /v1/templates:
    get:
      operationId: public_api_api_list_templates
      summary: List Templates
      parameters:
      - in: query
        name: limit
        schema:
          default: 100
          description: Maximum number of records to return
          exclusiveMinimum: 0
          maximum: 1000
          title: Limit
          type: integer
        required: false
        description: Maximum number of records to return
      - in: query
        name: starting_after
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Return records starting after this ID. Used for pagination.
          title: Starting After
        required: false
        description: Return records starting after this ID. Used for pagination.
      - in: query
        name: created_before
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created before this date
          title: Created Before
        required: false
        description: Return records created before this date
      - in: query
        name: created_after
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created after this date
          title: Created After
        required: false
        description: Return records created after this date
      - in: query
        name: updated_before
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated before this date
          title: Updated Before
        required: false
        description: Return records updated before this date
      - in: query
        name: updated_after
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated after this date
          title: Updated After
        required: false
        description: Return records updated after this date
      - in: query
        name: name
        schema:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter by names (case-insensitive partial match for multiple
            values)
          title: Name
        required: false
        description: Filter by names (case-insensitive partial match for multiple
          values)
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTemplatesResponse'
      description: Retrieve a list of available templates for generating tables
      tags:
      - Templates
      security:
      - ApiKeyAuth: []
  /v1/documents/{document_id}:
    get:
      operationId: public_api_api_get_document
      summary: Get Document
      parameters:
      - in: path
        name: document_id
        schema:
          title: Document Id
          type: string
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentRecord'
      tags:
      - Documents
      security:
      - ApiKeyAuth: []
  /v1/documents:
    post:
      operationId: public_api_api_create_document
      summary: Create Document
      parameters: []
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentRecord'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '416':
          description: Requested Range Not Satisfiable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '418':
          description: I'm a Teapot
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '451':
          description: Unavailable For Legal Reasons
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '425':
          description: Too Early
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '406':
          description: Not Acceptable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '407':
          description: Proxy Authentication Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '410':
          description: Gone
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '411':
          description: Length Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '412':
          description: Precondition Failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '502':
          description: Bad Gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Service Unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '504':
          description: Gateway Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      description: Upload a new document
      tags:
      - Documents
      requestBody:
        content:
          multipart/form-data:
            schema:
              properties:
                file:
                  format: binary
                  title: File
                  type: string
                group_id:
                  anyOf:
                  - type: string
                  - type: 'null'
                  title: Group Id
              required:
              - file
              title: MultiPartBodyParams
              type: object
        required: true
      security:
      - ApiKeyAuth: []
    get:
      operationId: public_api_api_list_documents
      summary: List Documents
      parameters:
      - in: query
        name: limit
        schema:
          default: 100
          description: Maximum number of records to return
          exclusiveMinimum: 0
          maximum: 1000
          title: Limit
          type: integer
        required: false
        description: Maximum number of records to return
      - in: query
        name: starting_after
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Return records starting after this ID. Used for pagination.
          title: Starting After
        required: false
        description: Return records starting after this ID. Used for pagination.
      - in: query
        name: created_before
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created before this date
          title: Created Before
        required: false
        description: Return records created before this date
      - in: query
        name: created_after
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created after this date
          title: Created After
        required: false
        description: Return records created after this date
      - in: query
        name: updated_before
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated before this date
          title: Updated Before
        required: false
        description: Return records updated before this date
      - in: query
        name: updated_after
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated after this date
          title: Updated After
        required: false
        description: Return records updated after this date
      - in: query
        name: name
        schema:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter by names (case-insensitive partial match for multiple
            values)
          title: Name
        required: false
        description: Filter by names (case-insensitive partial match for multiple
          values)
      - in: query
        name: id
        schema:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Only return documents that match these external IDs
          title: Id
        required: false
        description: Only return documents that match these external IDs
      - in: query
        name: type
        schema:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Only include documents of these types
          title: Type
        required: false
        description: Only include documents of these types
      - in: query
        name: group
        schema:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Only include documents from these groups
          title: Group
        required: false
        description: Only include documents from these groups
      - in: query
        name: status
        schema:
          anyOf:
          - items:
              $ref: '#/components/schemas/DocumentStatus'
            type: array
          - type: 'null'
          description: Only include documents with these statuses
          title: Status
        required: false
        description: Only include documents with these statuses
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListDocumentsResponse'
      description: Retrieve a list of document records with optional filtering.
      tags:
      - Documents
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
              - $ref: '#/components/schemas/ListDocumentsRequestBody'
              - type: 'null'
              description: Optional body filters
        required: false
      security:
      - ApiKeyAuth: []
  /v1/properties:
    get:
      operationId: public_api_api_list_properties
      summary: List Properties
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPropertiesResponse'
      description: Retrieve a list of document properties with optional filtering.
      tags:
      - Properties
      security:
      - ApiKeyAuth: []
  /v1/groups:
    get:
      operationId: public_api_api_list_groups
      summary: List Groups
      parameters:
      - in: query
        name: limit
        schema:
          default: 100
          description: Maximum number of records to return
          exclusiveMinimum: 0
          maximum: 1000
          title: Limit
          type: integer
        required: false
        description: Maximum number of records to return
      - in: query
        name: starting_after
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Return records starting after this ID. Used for pagination.
          title: Starting After
        required: false
        description: Return records starting after this ID. Used for pagination.
      - in: query
        name: created_before
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created before this date
          title: Created Before
        required: false
        description: Return records created before this date
      - in: query
        name: created_after
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created after this date
          title: Created After
        required: false
        description: Return records created after this date
      - in: query
        name: updated_before
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated before this date
          title: Updated Before
        required: false
        description: Return records updated before this date
      - in: query
        name: updated_after
        schema:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated after this date
          title: Updated After
        required: false
        description: Return records updated after this date
      - in: query
        name: name
        schema:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter by names (case-insensitive partial match for multiple
            values)
          title: Name
        required: false
        description: Filter by names (case-insensitive partial match for multiple
          values)
      - in: query
        name: group_type
        schema:
          anyOf:
          - items:
              $ref: '#/components/schemas/GroupType'
            type: array
          - type: 'null'
          description: Filter groups by their type (e.g., "personal", "private", "public")
          title: Group Type
        required: false
        description: Filter groups by their type (e.g., "personal", "private", "public")
      - in: query
        name: is_private
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Filter groups by privacy status - true for private, false for
            public
          title: Is Private
        required: false
        description: Filter groups by privacy status - true for private, false for
          public
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListGroupsResponse'
      description: Retrieve a list of available groups for generating tables
      tags:
      - Groups
      security:
      - ApiKeyAuth: []
  /v1/documents/{document_id}/properties:
    post:
      operationId: public_api_api_add_properties
      summary: Add Properties
      parameters:
      - in: path
        name: document_id
        schema:
          title: Document Id
          type: string
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentRecord'
      description: "Add new properties to a document using provided property definitions\
        \ and values.\n\nThis endpoint allows users to attach multiple properties\
        \ to a document\nby specifying the property type definitions and their corresponding\
        \ values.\n\nArgs:\n    request: The request object containing authentication\
        \ information.\n    document_id: The unique identifier of the document to\
        \ which properties will be added.\n    properties: A list of PropertyInput\
        \ objects specifying the new properties to add.\n\nReturns:\n    DocumentRecord:\
        \ The updated document record after properties have been added.\n\nRaises:\n\
        \    HttpError: 404 If the document is not found\n    HttpError: 422 If the\
        \ properties provided do not have a matching definition"
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/PropertyInput'
              title: Properties
        required: true
      security:
      - ApiKeyAuth: []
components:
  schemas:
    ListTablesRequest:
      description: A request for a paginated list of tables available to this client
      properties:
        limit:
          default: 100
          description: Maximum number of records to return
          exclusiveMinimum: 0
          maximum: 1000
          title: Limit
          type: integer
        starting_after:
          anyOf:
          - type: string
          - type: 'null'
          description: Return records starting after this ID. Used for pagination.
          title: Starting After
        created_before:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created before this date
          title: Created Before
        created_after:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created after this date
          title: Created After
        updated_before:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated before this date
          title: Updated Before
        updated_after:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated after this date
          title: Updated After
        name:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter by names (case-insensitive partial match for multiple
            values)
          title: Name
        status:
          anyOf:
          - items:
              $ref: '#/components/schemas/TableBuildStatus'
            type: array
          - type: 'null'
          description: Filter tables by their status (e.g., "draft", "processing")
          title: Status
        group_id:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter tables by group ID(s) to only include tables from specific
            groups
          title: Group Id
      title: ListTablesRequest
      type: object
    TableBuildStatus:
      description: The build status of the table
      enum:
      - draft
      - building
      - completed
      - failed
      - cancelled
      title: TableBuildStatus
      type: string
    ListTablesResponse:
      description: Response for listing tables
      properties:
        has_more:
          description: Indicates if there are more records to fetch after the current
            page.
          title: Has More
          type: boolean
        tables:
          description: All tables that matched the requested filters
          items:
            $ref: '#/components/schemas/TableRecord'
          title: Tables
          type: array
      required:
      - has_more
      - tables
      title: ListTablesResponse
      type: object
    TableRecord:
      description: All metadata for a table, suitable for a List response.
      properties:
        id:
          description: Unique identifier for a table
          example: tbl_11abcd1234efgh6789
          title: Id
          type: string
        name:
          description: Name of the table
          example: Q4 2024 Contract Analysis
          title: Name
          type: string
        status:
          $ref: '#/components/schemas/TableBuildStatus'
        created_at:
          description: Timestamp when the table was created
          format: date-time
          title: Created At
          type: string
        updated_at:
          description: Timestamp when the table was last updated
          format: date-time
          title: Updated At
          type: string
        started_at:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Timestamp when table processing started
          title: Started At
        completed_at:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Timestamp when table processing completed
          title: Completed At
        failed_at:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Timestamp when table processing failed
          title: Failed At
        cancelled_at:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Timestamp when table processing was cancelled
          title: Cancelled At
        document_count:
          description: Number of documents included in the table
          example: 5
          title: Document Count
          type: integer
        result_count:
          description: Number of results in the table
          example: 10
          title: Result Count
          type: integer
        group_id:
          description: Unique identifier for the group this table belongs to
          example: grp_11abcd1234efgh6789
          title: Group Id
          type: string
        group_name:
          description: Name of the group this table belongs to
          example: Q4 2024 Analysis Group
          title: Group Name
          type: string
      required:
      - id
      - name
      - status
      - created_at
      - updated_at
      - document_count
      - result_count
      - group_id
      - group_name
      title: TableRecord
      type: object
    CreateTableResponse:
      description: Response after creating a table
      properties:
        id:
          description: Unique identifier for a table
          example: tbl_11abcd1234efgh6789
          title: Id
          type: string
        status:
          $ref: '#/components/schemas/TableBuildStatus'
      required:
      - id
      - status
      title: CreateTableResponse
      type: object
    CreateTableRequest:
      description: Request to create a new table
      properties:
        name:
          description: Name of the table
          example: Q4 2024 Contract Analysis
          title: Name
          type: string
        template_id:
          description: Unique identifier for a table template
          example: tpl_11abcd1234efgh6789
          title: Template Id
          type: string
        document_ids:
          description: List of document ids to be included in the table
          items:
            type: string
          minItems: 1
          title: Document Ids
          type: array
        include_citations:
          default: true
          description: Whether citations should be included in the table result
          title: Include Citations
          type: boolean
        group_id:
          anyOf:
          - type: string
          - type: 'null'
          description: Unique identifier for an existing group to assign this table
            to
          example: grp_11abcd1234efgh6789
          title: Group Id
      required:
      - name
      - template_id
      - document_ids
      title: CreateTableRequest
      type: object
    GetTableResponse:
      description: The response to getting a single table.
      properties:
        table:
          $ref: '#/components/schemas/TableRecord'
          description: Metadata for an individual table, included for completeness
      required:
      - table
      title: GetTableResponse
      type: object
    ListResultsRequest:
      description: A request for a paginated list of results in a table
      properties:
        limit:
          default: 100
          description: Maximum number of records to return
          exclusiveMinimum: 0
          maximum: 1000
          title: Limit
          type: integer
        starting_after:
          anyOf:
          - type: string
          - type: 'null'
          description: Return records starting after this ID. Used for pagination.
          title: Starting After
        created_before:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created before this date
          title: Created Before
        created_after:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created after this date
          title: Created After
        updated_before:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated before this date
          title: Updated Before
        updated_after:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated after this date
          title: Updated After
        document_id:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter results by document ID(s) to only include results from
            specific documents
          title: Document Id
        status:
          anyOf:
          - items:
              $ref: '#/components/schemas/ResultStatus'
            type: array
          - type: 'null'
          description: Filter results by their status (e.g., "pending", "completed")
          title: Status
      title: ListResultsRequest
      type: object
    ResultStatus:
      description: The processing status of a table result
      enum:
      - pending
      - building
      - completed
      - failed
      title: ResultStatus
      type: string
    Answer:
      description: An extracted answer with optional metadata
      properties:
        id:
          description: Unique identifier for an Answer
          example: tbr_11abcd1234efgh6789
          title: Id
          type: string
        text:
          anyOf:
          - type: string
          - type: 'null'
          description: The extracted raw text answer
          example: USD 250,000.00
          title: Text
        value:
          anyOf:
          - type: string
          - type: number
          - type: boolean
          - items:
              type: string
            type: array
          - type: 'null'
          description: The parsed value - can be string, number, boolean, or array
            of strings
          title: Value
        unit:
          anyOf:
          - type: string
          - type: 'null'
          description: The unit of the parsed value
          example: USD
          title: Unit
        is_verified:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Whether the answer has been verified by a human
          title: Is Verified
        last_edited_at:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Timestamp when the answer was last edited
          title: Last Edited At
        last_editor:
          anyOf:
          - type: string
          - type: 'null'
          description: Identifier of the user who last edited the answer
          title: Last Editor
      title: Answer
      type: object
    AnswerFormat:
      description: The format type of the answer
      enum:
      - text_summary
      - text_word
      - number_general
      - number_currency
      - number_duration
      - number_percentage
      - date
      - yes_no
      - select
      - multi_select
      title: AnswerFormat
      type: string
    Citation:
      description: Citation information for an answer
      properties:
        uri:
          description: URI to the specific section in the document
          title: Uri
          type: string
        text:
          description: The text excerpt from the document that supports the answer
          title: Text
          type: string
        section:
          anyOf:
          - type: string
          - type: 'null'
          description: The section of the document where the answer was found
          title: Section
      required:
      - uri
      - text
      title: Citation
      type: object
    ListResultsResponse:
      description: Response for listing results in a table
      properties:
        has_more:
          description: Indicates if there are more records to fetch after the current
            page.
          title: Has More
          type: boolean
        results:
          description: All results that matched the requested filters
          items:
            $ref: '#/components/schemas/TableResult'
          title: Results
          type: array
      required:
      - has_more
      - results
      title: ListResultsResponse
      type: object
    Prompt:
      description: A prompt definition for extracting information
      properties:
        name:
          description: Name of the prompt
          example: Contract Value
          title: Name
          type: string
        prompt_text:
          description: The text of the prompt that will be used to extract information
          example: What is the total contract value specified in this agreement?
          title: Prompt Text
          type: string
        answer_format:
          $ref: '#/components/schemas/AnswerFormat'
      required:
      - name
      - prompt_text
      - answer_format
      title: Prompt
      type: object
    TableResult:
      description: A single result in a table
      properties:
        status:
          $ref: '#/components/schemas/ResultStatus'
          description: The processing status of this result
        prompt:
          $ref: '#/components/schemas/Prompt'
        document:
          $ref: '#/components/schemas/TableResultDocument'
        answer:
          anyOf:
          - $ref: '#/components/schemas/Answer'
          - type: 'null'
        citations:
          anyOf:
          - items:
              $ref: '#/components/schemas/Citation'
            type: array
          - type: 'null'
          description: Citation information for the answer
          title: Citations
      required:
      - status
      - prompt
      - document
      title: TableResult
      type: object
    TableResultDocument:
      description: Document reference in a table result
      properties:
        id:
          description: Unique identifier for a document
          example: doc_11abcd1234efgh6789
          title: Id
          type: string
        name:
          description: Name of the document
          example: Q4 2024 Service Agreement
          title: Name
          type: string
      required:
      - id
      - name
      title: TableResultDocument
      type: object
    AddDocumentsRequest:
      description: Request to add documents to an existing table
      properties:
        document_ids:
          description: List of document ids to add to the table
          items:
            type: string
          minItems: 1
          title: Document Ids
          type: array
      required:
      - document_ids
      title: AddDocumentsRequest
      type: object
    ListTemplatesRequest:
      description: Paginated request to get templates
      properties:
        limit:
          default: 100
          description: Maximum number of records to return
          exclusiveMinimum: 0
          maximum: 1000
          title: Limit
          type: integer
        starting_after:
          anyOf:
          - type: string
          - type: 'null'
          description: Return records starting after this ID. Used for pagination.
          title: Starting After
        created_before:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created before this date
          title: Created Before
        created_after:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created after this date
          title: Created After
        updated_before:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated before this date
          title: Updated Before
        updated_after:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated after this date
          title: Updated After
        name:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter by names (case-insensitive partial match for multiple
            values)
          title: Name
      title: ListTemplatesRequest
      type: object
    ListTemplatesResponse:
      description: Response for listing templates
      properties:
        has_more:
          description: Indicates if there are more records to fetch after the current
            page.
          title: Has More
          type: boolean
        templates:
          description: All the templates matching the request.
          items:
            $ref: '#/components/schemas/Template'
          title: Templates
          type: array
      required:
      - has_more
      - templates
      title: ListTemplatesResponse
      type: object
    Template:
      description: A table template with its prompts
      properties:
        id:
          description: Unique identifier for a template
          example: tpl_11abcd1234efgh6789
          title: Id
          type: string
        name:
          description: Name of the template
          example: Standard Due Diligence Template
          title: Name
          type: string
        description:
          description: Description of what this template is designed to extract
          example: Comprehensive template for reviewing service agreements and extracting
            key terms
          title: Description
          type: string
        prompts:
          description: List of prompts included in this template
          items:
            $ref: '#/components/schemas/Prompt'
          title: Prompts
          type: array
        created_at:
          description: Date and time of creation
          format: date-time
          title: Created At
          type: string
        updated_at:
          description: Date and time of last update
          format: date-time
          title: Updated At
          type: string
      required:
      - id
      - name
      - description
      - prompts
      - created_at
      - updated_at
      title: Template
      type: object
    DocumentProperty:
      description: A document property with name/value pair
      properties:
        id:
          anyOf:
          - type: string
          - type: 'null'
          description: Unique ID for this property
          title: Id
        definition:
          $ref: '#/components/schemas/DocumentPropertyDefinition'
          description: Definition of the document property
        value:
          anyOf:
          - type: string
          - type: number
          - format: date-time
            type: string
          - type: boolean
          description: Value of the property
          title: Value
      required:
      - id
      - definition
      - value
      title: DocumentProperty
      type: object
    DocumentPropertyDefinition:
      description: Definition of a document property with metadata
      properties:
        key:
          description: Unique key for the property
          example: contract_value
          title: Key
          type: string
        name:
          description: Display name of the property
          example: Contract Value
          title: Name
          type: string
        type:
          $ref: '#/components/schemas/DocumentPropertyType'
          description: Data type of the property value
          example: number
        description:
          anyOf:
          - type: string
          - type: 'null'
          description: Optional description of the property
          example: The total value of the contract in USD
          title: Description
      required:
      - key
      - name
      - type
      title: DocumentPropertyDefinition
      type: object
    DocumentPropertyType:
      description: The data type of a document property
      enum:
      - string
      - number
      - datetime
      - boolean
      title: DocumentPropertyType
      type: string
    DocumentRecord:
      description: Document record with all metadata
      properties:
        id:
          description: Unique identifier for a document
          example: doc_11abcd1234efgh6789
          title: Id
          type: string
        name:
          description: Name of the document
          example: Q4 2024 Service Agreement
          title: Name
          type: string
        type:
          anyOf:
          - type: string
          - type: 'null'
          description: Type of the document
          example: service_agreement
          title: Type
        group:
          anyOf:
          - type: string
          - type: 'null'
          description: Group identifier for the document
          example: grp_contracts_2024
          title: Group
        document_status:
          $ref: '#/components/schemas/DocumentStatus'
          description: Current status of the document
        processing_status:
          $ref: '#/components/schemas/ProcessingStatus'
          description: Processing status of the document
        created_at:
          description: Timestamp when the document was created
          format: date-time
          title: Created At
          type: string
        updated_at:
          description: Timestamp when the document was last updated
          format: date-time
          title: Updated At
          type: string
        properties:
          type: array
          items:
            $ref: '#/components/schemas/DocumentProperty'
          description: List of custom document properties
          title: Properties
      required:
      - id
      - name
      - document_status
      - processing_status
      - created_at
      - updated_at
      title: DocumentRecord
      type: object
    DocumentStatus:
      description: The status of a document
      enum:
      - active
      - inactive
      - archived
      - deleted
      title: DocumentStatus
      type: string
    ProcessingStatus:
      description: The processing status of a document
      enum:
      - pending
      - processing
      - completed
      - failed
      title: ProcessingStatus
      type: string
    ErrorResponse:
      additionalProperties: true
      description: 'Response model for error messages.


        Adapted and simplified from "Problem Details for HTTP APIs" (IETF RFC 7807).'
      properties:
        title:
          description: A short, generic, human-readable summary of the problem
          title: Title
          type: string
        detail:
          description: A human-readable explanation specific to this occurrence of
            the problem
          title: Detail
          type: string
      required:
      - title
      - detail
      title: ErrorResponse
      type: object
    ListDocumentsRequest:
      description: Request to list documents with filtering options
      properties:
        limit:
          default: 100
          description: Maximum number of records to return
          exclusiveMinimum: 0
          maximum: 1000
          title: Limit
          type: integer
        starting_after:
          anyOf:
          - type: string
          - type: 'null'
          description: Return records starting after this ID. Used for pagination.
          title: Starting After
        created_before:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created before this date
          title: Created Before
        created_after:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created after this date
          title: Created After
        updated_before:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated before this date
          title: Updated Before
        updated_after:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated after this date
          title: Updated After
        name:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter by names (case-insensitive partial match for multiple
            values)
          title: Name
        id:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Only return documents that match these external IDs
          title: Id
        type:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Only include documents of these types
          title: Type
        group:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Only include documents from these groups
          title: Group
        status:
          anyOf:
          - items:
              $ref: '#/components/schemas/DocumentStatus'
            type: array
          - type: 'null'
          description: Only include documents with these statuses
          title: Status
      title: ListDocumentsRequest
      type: object
    ListDocumentsResponse:
      description: Response for listing documents
      properties:
        has_more:
          description: Indicates if there are more records to fetch after the current
            page.
          title: Has More
          type: boolean
        documents:
          description: All documents that matched the requested filters
          items:
            $ref: '#/components/schemas/DocumentRecord'
          title: Documents
          type: array
      required:
      - has_more
      - documents
      title: ListDocumentsResponse
      type: object
    ListDocumentsRequestBody:
      description: Request body for more complex filtering of documents
      properties:
        properties:
          anyOf:
          - items:
              $ref: '#/components/schemas/PropertyFilter'
            type: array
          - type: 'null'
          description: List of property filters to apply. Documents returned must
            match a value for each property key specified.
          title: Properties
      title: ListDocumentsRequestBody
      type: object
    PropertyFilter:
      properties:
        key:
          description: Property key to filter by
          title: Key
          type: string
        values:
          description: List of acceptable values for this property
          items:
            anyOf:
            - type: string
            - type: number
            - format: date-time
              type: string
            - type: boolean
          title: Values
          type: array
      required:
      - key
      - values
      title: PropertyFilter
      type: object
    ListPropertiesResponse:
      description: Response for listing properties associated with documents.
      properties:
        properties:
          type: array
          items:
            $ref: '#/components/schemas/DocumentPropertyDefinition'
          description: All properties that are associated with documents for the current
            client.
          title: Properties
      required:
      - properties
      title: ListPropertiesResponse
      type: object
    GroupType:
      description: The type of group for organization and access control
      enum:
      - personal
      - private
      - public
      - report_public
      - report_private
      title: GroupType
      type: string
    ListGroupsRequest:
      description: A request for a paginated list of groups available to this client
      properties:
        limit:
          default: 100
          description: Maximum number of records to return
          exclusiveMinimum: 0
          maximum: 1000
          title: Limit
          type: integer
        starting_after:
          anyOf:
          - type: string
          - type: 'null'
          description: Return records starting after this ID. Used for pagination.
          title: Starting After
        created_before:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created before this date
          title: Created Before
        created_after:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records created after this date
          title: Created After
        updated_before:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated before this date
          title: Updated Before
        updated_after:
          anyOf:
          - format: date-time
            type: string
          - type: 'null'
          description: Return records updated after this date
          title: Updated After
        name:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          description: Filter by names (case-insensitive partial match for multiple
            values)
          title: Name
        group_type:
          anyOf:
          - items:
              $ref: '#/components/schemas/GroupType'
            type: array
          - type: 'null'
          description: Filter groups by their type (e.g., "personal", "private", "public")
          title: Group Type
        is_private:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Filter groups by privacy status - true for private, false for
            public
          title: Is Private
      title: ListGroupsRequest
      type: object
    Group:
      description: A group for organizing documents and managing access
      properties:
        id:
          description: Unique identifier for a group
          example: grp_11abcd1234efgh6789
          title: Id
          type: string
        name:
          description: Name of the group
          example: Q4 2024 Contract Review
          title: Name
          type: string
        group_type:
          $ref: '#/components/schemas/GroupType'
          description: The type of group which determines visibility and access
        is_private:
          description: Whether the group is private and requires explicit membership
          title: Is Private
          type: boolean
        is_default:
          description: Whether this is a default group for the client
          title: Is Default
          type: boolean
        created_at:
          description: Timestamp when the group was created
          format: date-time
          title: Created At
          type: string
        updated_at:
          description: Timestamp when the group was last updated
          format: date-time
          title: Updated At
          type: string
        created_by:
          anyOf:
          - type: string
          - type: 'null'
          description: Email of the user who created the group
          title: Created By
        user_count:
          description: Number of users assigned to this group
          example: 5
          title: User Count
          type: integer
        document_count:
          description: Number of documents in this group
          example: 12
          title: Document Count
          type: integer
      required:
      - id
      - name
      - group_type
      - is_private
      - is_default
      - created_at
      - updated_at
      - user_count
      - document_count
      title: Group
      type: object
    ListGroupsResponse:
      description: Response for listing groups
      properties:
        has_more:
          description: Indicates if there are more records to fetch after the current
            page.
          title: Has More
          type: boolean
        groups:
          description: All groups that matched the requested filters
          items:
            $ref: '#/components/schemas/Group'
          title: Groups
          type: array
      required:
      - has_more
      - groups
      title: ListGroupsResponse
      type: object
    PropertyInput:
      description: Input for creating properties associated with documents.
      properties:
        definition_key:
          description: Identifier of the property definition to which this value applies.
          title: Definition Key
          type: string
        value:
          anyOf:
          - type: string
          - type: number
          - format: date-time
            type: string
          - type: boolean
          description: The value to assign to the property. Can be a string, number,
            datetime (ISO 8601 format), or boolean, depending on the property definition.
          title: Value
      required:
      - definition_key
      - value
      title: PropertyInput
      type: object
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
servers:
- url: https://api.robinai.com
  description: RobinAI API server
        

Output.

JSON

Authentication.

Robin Instance + API keys

Integrations.

CRMs, CLMs, ERPs, etc.

Use cases for your business.

Contract Lifecycle Management.

Auto-populate systems with metadata from legacy or incoming agreements.

M&A diligence.

Extract and aggregate data points from thousands of contracts in hours, not weeks.

Procurement & Finance.

Leverage obligations, renewals, and pricing terms across supplier agreements.

Regulatory compliance.

Surface critical terms and clauses for monitoring and auditing.