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

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.