GenuineAIGenuineAI
For usersFor developers
  • Overview
  • Guides
  • How-to
  • API reference
Documentation
  • Quickstart
  • Authentication
  • Errors
  • Rate limits
  • API reference
Platform
  • Platform overview
  • Solutions
  • Pricing
  • Sign in
Company
  • Status
  • Trust Center
  • Contact
  • Terms of Service
  • Privacy Policy

© 2026 GenuineAI Ventures LLC

support@genuinehq.com
Overview
Core
Media library
AI
Documents
    List documentsgetDeprecate a documentpostRestore a documentpostTag documentspostList formatsget
    Document folders
    Document relations
Knowledge
Creative
Website & content
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

Documents

The document library — data sheets, decks, manuals and schedules, with the summary and searchable text written for each one on arrival.


List documents

GET
https://api.genuineai.app/api/v1
/documents

The document library, with the folders each document sits in and the summary written for it on upload.

lifecycle decides which documents are in scope and defaults to active: a deprecated document is kept and still downloadable, but it is out of the way and the AI no longer retrieves it, so it stays out of the list unless you ask for deprecated or all.

search matches the name and the summary. embedding_search matches on meaning instead, scoring every document against the phrase and ordering by the score, which is what finds a pricing deck that never uses the word "pricing". If the embedding cannot be produced the request still filters, falling back to the substring match rather than answering with the whole library.

folder narrows to one folder, tags to the values of a tag group, and file_format to a file name extension. GET /documents/formats answers which formats are worth offering.

Requires the module-documents license feature. Without it the request is refused with 403 license_required — see plans and modules.

List documents › query Parameters

cursor
​string · maxLength: 512 · pattern: ^[A-Za-z0-9_-]+$
embedding_search
​string
favorite
​boolean
file_added_by
​string
file_format
​string
folder
​string · uuid
lifecycle
​string · enum
Enum values:
active
deprecated
all
limit
​integer · pattern: ^-?[0-9]+(\.[0-9]+)?…
offset
​integer · min: 0 · pattern: ^-?[0-9]+(\.[0-9]+)?…
search
​string · maxLength: 200
similarityThreshold
​number · min: 0 · max: 1
sort
​string · minLength: 1 · maxLength: 64 · pattern: ^-?[a-z0-9_]+$
tags
​string

List documents › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

List documents › Responses

Success

​Document[] · required
has_more
​boolean · required

Whether more rows exist past this page.

next_cursor
​string | null · required

Pass back as cursor for the next page. Null on the last page.

GET/documents
curl https://api.genuineai.app/api/v1/documents \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "file_repo": { "library": [ "media" ], "ds": "00000000-0000-0000-0000-000000000000", "thread": "00000000-0000-0000-0000-000000000000", "design": "00000000-0000-0000-0000-000000000000", "prompt": "00000000-0000-0000-0000-000000000000", "ppt": "00000000-0000-0000-0000-000000000000", "ppt_template": "00000000-0000-0000-0000-000000000000", "form": "00000000-0000-0000-0000-000000000000", "submission": "00000000-0000-0000-0000-000000000000", "field": "field", "infographic": "00000000-0000-0000-0000-000000000000", "sitemap": "00000000-0000-0000-0000-000000000000", "node": "00000000-0000-0000-0000-000000000000", "wf_instance": "00000000-0000-0000-0000-000000000000", "wf_name": "wf_name" }, "file_id": "00000000-0000-0000-0000-000000000000", "file_name": "file_name", "file_type": "file_type", "file_size": 0, "file_created": "2024-08-25T15:00:00Z", "file_updated": "2024-08-25T15:00:00Z", "file_added_by": "file_added_by", "file_hash": "file_hash", "file_metadata": {}, "file_replicas": "file_replicas", "file_status": "file_status", "file_bucket": "file_bucket", "file_folder": "file_folder", "file_provider_id": "00000000-0000-0000-0000-000000000000", "file_summary": "file_summary", "file_pref": {}, "file_folders": [ {} ], "file_deprecated": {}, "file_relation_count": 0, "markdown_ready": true, "similarity": 0 } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Deprecate a document

POST
https://api.genuineai.app/api/v1
/documents/{id}/deprecate

Takes a document out of circulation without deleting it. It leaves the library's default listing, and the AI stops retrieving it: its indexed passages are removed, so it can no longer turn up inside an answer.

Nothing is destroyed. The file, its versions and its download links are untouched, its converted text is kept, and somebody who names the document directly still gets it. Restore puts it back and re-indexes it.

Requires the module-documents license feature. Without it the request is refused with 403 license_required — see plans and modules.

Deprecate a document › path Parameters

id
​string · uuid · required

Deprecate a document › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Deprecate a document › Responses

Success

A document in the library: the file itself, the folders it sits in, and the summary written for it when it was uploaded.
Document
​FileRepo

What the file belongs to. One key naming the owning object, or library for a library it sits in rather than an object it belongs to. Keys the platform stamps (presentation jobs, form submissions, workflow runs) are returned but cannot be sent.

file_id
​string · uuid
file_name
​string
file_type
​string
file_size
​integer
file_created
​string · date-time
file_updated
​string · date-time
file_added_by
​string
file_hash
​string
file_metadata
​object
file_replicas
​string
file_status
​string
file_bucket
​string
file_folder
​string
file_provider_id
​string · uuid
file_summary
​string
file_pref
​object
​object[]
file_deprecated
​object
file_relation_count
​integer

How many other documents this one is linked to.

markdown_ready
​boolean
similarity
​number
POST/documents/{id}/deprecate
curl https://api.genuineai.app/api/v1/documents/:id/deprecate \ --request POST \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "file_repo": { "library": [ "media" ], "ds": "00000000-0000-0000-0000-000000000000", "thread": "00000000-0000-0000-0000-000000000000", "design": "00000000-0000-0000-0000-000000000000", "prompt": "00000000-0000-0000-0000-000000000000", "ppt": "00000000-0000-0000-0000-000000000000", "ppt_template": "00000000-0000-0000-0000-000000000000", "form": "00000000-0000-0000-0000-000000000000", "submission": "00000000-0000-0000-0000-000000000000", "field": "field", "infographic": "00000000-0000-0000-0000-000000000000", "sitemap": "00000000-0000-0000-0000-000000000000", "node": "00000000-0000-0000-0000-000000000000", "wf_instance": "00000000-0000-0000-0000-000000000000", "wf_name": "wf_name" }, "file_id": "00000000-0000-0000-0000-000000000000", "file_name": "file_name", "file_type": "file_type", "file_size": 0, "file_created": "2024-08-25T15:00:00Z", "file_updated": "2024-08-25T15:00:00Z", "file_added_by": "file_added_by", "file_hash": "file_hash", "file_metadata": {}, "file_replicas": "file_replicas", "file_status": "file_status", "file_bucket": "file_bucket", "file_folder": "file_folder", "file_provider_id": "00000000-0000-0000-0000-000000000000", "file_summary": "file_summary", "file_pref": {}, "file_folders": [ {} ], "file_deprecated": {}, "file_relation_count": 0, "markdown_ready": true, "similarity": 0 }
json
application/json

Restore a document

POST
https://api.genuineai.app/api/v1
/documents/{id}/restore

Puts a deprecated document back into the library and re-indexes it, so the AI can retrieve it again.

Requires the module-documents license feature. Without it the request is refused with 403 license_required — see plans and modules.

Restore a document › path Parameters

id
​string · uuid · required

Restore a document › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Restore a document › Responses

Success

A document in the library: the file itself, the folders it sits in, and the summary written for it when it was uploaded.
Document
​FileRepo

What the file belongs to. One key naming the owning object, or library for a library it sits in rather than an object it belongs to. Keys the platform stamps (presentation jobs, form submissions, workflow runs) are returned but cannot be sent.

file_id
​string · uuid
file_name
​string
file_type
​string
file_size
​integer
file_created
​string · date-time
file_updated
​string · date-time
file_added_by
​string
file_hash
​string
file_metadata
​object
file_replicas
​string
file_status
​string
file_bucket
​string
file_folder
​string
file_provider_id
​string · uuid
file_summary
​string
file_pref
​object
​object[]
file_deprecated
​object
file_relation_count
​integer

How many other documents this one is linked to.

markdown_ready
​boolean
similarity
​number
POST/documents/{id}/restore
curl https://api.genuineai.app/api/v1/documents/:id/restore \ --request POST \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "file_repo": { "library": [ "media" ], "ds": "00000000-0000-0000-0000-000000000000", "thread": "00000000-0000-0000-0000-000000000000", "design": "00000000-0000-0000-0000-000000000000", "prompt": "00000000-0000-0000-0000-000000000000", "ppt": "00000000-0000-0000-0000-000000000000", "ppt_template": "00000000-0000-0000-0000-000000000000", "form": "00000000-0000-0000-0000-000000000000", "submission": "00000000-0000-0000-0000-000000000000", "field": "field", "infographic": "00000000-0000-0000-0000-000000000000", "sitemap": "00000000-0000-0000-0000-000000000000", "node": "00000000-0000-0000-0000-000000000000", "wf_instance": "00000000-0000-0000-0000-000000000000", "wf_name": "wf_name" }, "file_id": "00000000-0000-0000-0000-000000000000", "file_name": "file_name", "file_type": "file_type", "file_size": 0, "file_created": "2024-08-25T15:00:00Z", "file_updated": "2024-08-25T15:00:00Z", "file_added_by": "file_added_by", "file_hash": "file_hash", "file_metadata": {}, "file_replicas": "file_replicas", "file_status": "file_status", "file_bucket": "file_bucket", "file_folder": "file_folder", "file_provider_id": "00000000-0000-0000-0000-000000000000", "file_summary": "file_summary", "file_pref": {}, "file_folders": [ {} ], "file_deprecated": {}, "file_relation_count": 0, "markdown_ready": true, "similarity": 0 }
json
application/json

Tag documents

POST
https://api.genuineai.app/api/v1
/documents/actions/set-tags

Adds and removes tag values across a set of documents in one call. add and remove are both maps of group name to values; a group the document does not carry is created, and a group left empty is dropped. Ids that name something other than a document in this library are ignored.

The groups themselves are configured per workspace — see the document tag groups under workspace administration.

Requires the module-documents license feature. Without it the request is refused with 403 license_required — see plans and modules.

Tag documents › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Tag documents › Request Body

file_ids
​string[] · required
add
​object
remove
​object

Tag documents › Responses

Success

No data returned
POST/documents/actions/set-tags
curl https://api.genuineai.app/api/v1/documents/actions/set-tags \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "file_ids": [ "00000000-0000-0000-0000-000000000000" ], "add": {}, "remove": {} }'
Example Request Body
{ "file_ids": [ "00000000-0000-0000-0000-000000000000" ], "add": {}, "remove": {} }
json
Example Responses
No example specified for this content type

List formats

GET
https://api.genuineai.app/api/v1
/documents/formats

Which file formats the library actually holds and how many of each, so the type filter can offer pdf and pptx without offering formats the account has none of. A row is a filter: send format straight back as file_format on GET /documents.

Only the folder and the lifecycle narrow the counts, so a count describes the library rather than the query in front of it. Counting is exact, which means reading every document the caller can see; a library too large to do that inside the server's budget answers with no rows rather than a guess.

Requires the module-documents license feature. Without it the request is refused with 403 license_required — see plans and modules.

List formats › query Parameters

folder
​string · uuid
lifecycle
​string · enum
Enum values:
active
deprecated
all

List formats › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

List formats › Responses

Success

​object[] · required

Ordered by count, most common first.

counted
​boolean · required

False when the library was too large to count in time.

GET/documents/formats
curl https://api.genuineai.app/api/v1/documents/formats \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "formats": [ { "format": "format", "count": 0 } ], "counted": true }
json
application/json

AssistDocument folders