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
    Files
    Uploads
    Stock photos
    Downloads
    File versions
      Save as a new filepostList versionsgetSave as a new versionpostDelete a versiondeleteRevert to a versionpost
    File analysis
    Media analysis schemas
    Faces
    Albums
    People
    Media tags
    Share links
    Publications
    Distribution control
AI
Documents
Knowledge
Creative
Website & content
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

File versions

Every save keeps the copy it replaced. Versions are per file, are capped, and count against stored bytes.


Save as a new file

POST
https://api.genuineai.app/api/v1
/files/{id}/save-as-new

Saves the current content as a separate file rather than as a version of this one, leaving the original where it is.

Requires any one of media:edit, document:edit, knowledge-base:write, thread:edit, design:edit, prompt:edit, presentation:edit or task:form:edit.

Save as a new file › path Parameters

id
​string · uuid · required

Save as a new file › 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.

Save as a new file › Request Body optional

purpose
​string
file_repo
​object

Save as a new file › Responses

Success

No data returned
POST/files/{id}/save-as-new
curl https://api.genuineai.app/api/v1/files/:id/save-as-new \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "purpose": "purpose", "file_repo": {} }'
Example Request Body
{ "purpose": "purpose", "file_repo": {} }
json
Example Responses
No example specified for this content type

List versions

GET
https://api.genuineai.app/api/v1
/files/{id}/versions

Returns the copies earlier saves replaced, newest first. Versions count against stored bytes and are capped per file.

Requires any one of media:view, document:view, knowledge-base:view, thread:view, design:view, prompt:view or presentation:view.

List versions › path Parameters

id
​string · uuid · required

List versions › 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 versions › Responses

Success

​FileVersion[]
A copy of a file that a later save replaced.
FileVersion
fv_id
​string · uuid
fv_created
​string · date-time
fv_master
​string
fv_reason
​string
fv_size
​integer
fv_type
​string
fv_hash
​string
fv_replicas
​string
fv_metadata
​object
fv_added_by
​string
fv_name
​string
fv_added_by_name
​string
GET/files/{id}/versions
curl https://api.genuineai.app/api/v1/files/:id/versions \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
[ { "fv_id": "00000000-0000-0000-0000-000000000000", "fv_created": "2024-08-25T15:00:00Z", "fv_master": "fv_master", "fv_reason": "fv_reason", "fv_size": 0, "fv_type": "fv_type", "fv_hash": "fv_hash", "fv_replicas": "fv_replicas", "fv_metadata": {}, "fv_added_by": "fv_added_by", "fv_name": "fv_name", "fv_added_by_name": "fv_added_by_name" } ]
json
application/json

Save as a new version

POST
https://api.genuineai.app/api/v1
/files/{id}/versions

Takes bytes already uploaded as a throw-away file and attaches them to this file as its newest version, in one step, removing the temporary file. This is how an editor saves without leaving a stray upload behind.

Requires any one of media:edit, document:edit, knowledge-base:write, thread:edit, design:edit, prompt:edit, presentation:edit or task:form:edit.

Save as a new version › path Parameters

id
​string · uuid · required

Save as a new version › query Parameters

takeOwnership
​boolean

Save as a new version › 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.

Save as a new version › Request Body

source_file_id
​string · uuid · required

Save as a new version › Responses

Success

No data returned
POST/files/{id}/versions
curl https://api.genuineai.app/api/v1/files/:id/versions \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "source_file_id": "00000000-0000-0000-0000-000000000000" }'
Example Request Body
{ "source_file_id": "00000000-0000-0000-0000-000000000000" }
json
Example Responses
No example specified for this content type

Delete a version

DELETE
https://api.genuineai.app/api/v1
/files/{id}/versions/{version_id}

Versions count against the storage quota, so pruning them frees space.

Requires any one of media:edit, document:edit, knowledge-base:write, thread:edit, design:edit, prompt:edit, presentation:edit or task:form:edit.

Delete a version › path Parameters

id
​string · uuid · required
version_id
​string · uuid · required

Delete a version › 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.

Delete a version › Responses

Success. No content.

No data returned
DELETE/files/{id}/versions/{version_id}
curl https://api.genuineai.app/api/v1/files/:id/versions/:version_id \ --request DELETE \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

Revert to a version

POST
https://api.genuineai.app/api/v1
/files/{id}/versions/{version_id}/revert

Swaps the current content with the chosen version rather than discarding what was there — the version you were on becomes a version itself, so a revert is undoable.

Requires any one of media:edit, document:edit, knowledge-base:write, thread:edit, design:edit, prompt:edit, presentation:edit or task:form:edit.

Revert to a version › path Parameters

id
​string · uuid · required
version_id
​string · uuid · required

Revert to a version › 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.

Revert to a version › Responses

Success

No data returned
POST/files/{id}/versions/{version_id}/revert
curl https://api.genuineai.app/api/v1/files/:id/versions/:version_id/revert \ --request POST \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

DownloadsFile analysis