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
    File analysis
    Media analysis schemas
    Faces
    Albums
    People
    Media tags
    Share links
    Publications
      Get a publicationgetPublish an assetpostUnpublish an assetdeleteList publicationsget
    Distribution control
AI
Documents
Knowledge
Creative
Website & content
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

Publications

Releasing an asset to a permanent public URL: which version is live, when it is reachable, and from where.


Get a publication

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

The asset's public life: its permanent URL, which version is live, the availability window, and the distribution rules the edge enforces — including the workspace-wide baseline, which applies whether or not the asset names it.

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

Get a publication › path Parameters

id
​string · uuid · required

Get a publication › 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.

Get a publication › Responses

Success

An asset released to a permanent public URL, with the distribution rules that govern it.
Publication
pub_id
​string · uuid
pub_file
​string
pub_state
​string
pub_version
​string
pub_hostname
​string
pub_name
​string
pub_size
​integer
pub_content_type
​string
pub_hash
​string
pub_start
​string · date-time
pub_end
​string · date-time
pub_copy_state
​string
pub_error
​string
pub_deny
​string[]
pub_restrictions
​string[]
pub_created
​string · date-time
pub_updated
​string · date-time
pub_published
​string
pub_revoked
​string
pub_url
​string · uri
pub_stale
​boolean
pub_file_name
​string
pub_published_name
​string
GET/files/{id}/publication
curl https://api.genuineai.app/api/v1/files/:id/publication \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "pub_id": "00000000-0000-0000-0000-000000000000", "pub_file": "pub_file", "pub_state": "pub_state", "pub_version": "pub_version", "pub_hostname": "pub_hostname", "pub_name": "pub_name", "pub_size": 0, "pub_content_type": "pub_content_type", "pub_hash": "pub_hash", "pub_start": "2024-08-25T15:00:00Z", "pub_end": "2024-08-25T15:00:00Z", "pub_copy_state": "pub_copy_state", "pub_error": "pub_error", "pub_deny": [ "string" ], "pub_restrictions": [ "00000000-0000-0000-0000-000000000000" ], "pub_created": "2024-08-25T15:00:00Z", "pub_updated": "2024-08-25T15:00:00Z", "pub_published": "pub_published", "pub_revoked": "pub_revoked", "pub_url": "https://www.example.com/path/to/resource", "pub_stale": true, "pub_file_name": "pub_file_name", "pub_published_name": "pub_published_name" }
json
application/json

Publish an asset

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

Releases the current version to its permanent URL, minting the URL on first publish and reusing it forever after. Publishing again re-copies the bytes only when the file changed; a save that changes rules or dates alone updates the edge policy in place. A copy runs in the background; the publication reports pub_copy_state until it is live.

Requires media:publish, media:edit, document:edit, knowledge-base:write, thread:edit, design:edit, prompt:edit, presentation:edit and task:form:edit together.

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

Publish an asset › path Parameters

id
​string · uuid · required

Publish an asset › 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.

Publish an asset › Request Body

distribution
​string · enum · required
Enum values:
worldwide
restricted
deny
​string[]
restrictions
​string[]
start
​string · date-time
end
​string · date-time

Publish an asset › Responses

Created

An asset released to a permanent public URL, with the distribution rules that govern it.
Publication
pub_id
​string · uuid
pub_file
​string
pub_state
​string
pub_version
​string
pub_hostname
​string
pub_name
​string
pub_size
​integer
pub_content_type
​string
pub_hash
​string
pub_start
​string · date-time
pub_end
​string · date-time
pub_copy_state
​string
pub_error
​string
pub_deny
​string[]
pub_restrictions
​string[]
pub_created
​string · date-time
pub_updated
​string · date-time
pub_published
​string
pub_revoked
​string
pub_url
​string · uri
pub_stale
​boolean
pub_file_name
​string
pub_published_name
​string
POST/files/{id}/publication
curl https://api.genuineai.app/api/v1/files/:id/publication \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "distribution": "worldwide", "deny": [ "string" ], "restrictions": [ "00000000-0000-0000-0000-000000000000" ], "start": "2024-08-25T15:00:00Z", "end": "2024-08-25T15:00:00Z" }'
Example Request Body
{ "distribution": "worldwide", "deny": [ "string" ], "restrictions": [ "00000000-0000-0000-0000-000000000000" ], "start": "2024-08-25T15:00:00Z", "end": "2024-08-25T15:00:00Z" }
json
Example Responses
{ "pub_id": "00000000-0000-0000-0000-000000000000", "pub_file": "pub_file", "pub_state": "pub_state", "pub_version": "pub_version", "pub_hostname": "pub_hostname", "pub_name": "pub_name", "pub_size": 0, "pub_content_type": "pub_content_type", "pub_hash": "pub_hash", "pub_start": "2024-08-25T15:00:00Z", "pub_end": "2024-08-25T15:00:00Z", "pub_copy_state": "pub_copy_state", "pub_error": "pub_error", "pub_deny": [ "string" ], "pub_restrictions": [ "00000000-0000-0000-0000-000000000000" ], "pub_created": "2024-08-25T15:00:00Z", "pub_updated": "2024-08-25T15:00:00Z", "pub_published": "pub_published", "pub_revoked": "pub_revoked", "pub_url": "https://www.example.com/path/to/resource", "pub_stale": true, "pub_file_name": "pub_file_name", "pub_published_name": "pub_published_name" }
json
application/json

Unpublish an asset

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

Deletes the published copy and retires the URL, which then answers 410 rather than 404 so downstream channels can tell a withdrawn asset from one that never existed. The URL is kept, so publishing again revives the same address.

Requires media:publish, media:edit, document:edit, knowledge-base:write, thread:edit, design:edit, prompt:edit, presentation:edit and task:form:edit together.

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

Unpublish an asset › path Parameters

id
​string · uuid · required

Unpublish an asset › 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.

Unpublish an asset › Responses

Success. No content.

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

List publications

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

Everything the workspace has released, across every asset. This is the view that answers "what is public right now" as one sortable list.

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

List publications › query Parameters

cursor
​string · maxLength: 512 · pattern: ^[A-Za-z0-9_-]+$
limit
​integer
offset
​integer · min: 0
pub_file
​string · uuid
pub_state
​string · enum
Enum values:
draft
scheduled
published
revoked
search
​string
sort
​string · minLength: 1 · maxLength: 64 · pattern: ^-?[a-z0-9_]+$

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

Success

​Publication[] · 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/publications
curl https://api.genuineai.app/api/v1/publications \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "pub_id": "00000000-0000-0000-0000-000000000000", "pub_file": "pub_file", "pub_state": "pub_state", "pub_version": "pub_version", "pub_hostname": "pub_hostname", "pub_name": "pub_name", "pub_size": 0, "pub_content_type": "pub_content_type", "pub_hash": "pub_hash", "pub_start": "2024-08-25T15:00:00Z", "pub_end": "2024-08-25T15:00:00Z", "pub_copy_state": "pub_copy_state", "pub_error": "pub_error", "pub_deny": [ "string" ], "pub_restrictions": [ "00000000-0000-0000-0000-000000000000" ], "pub_created": "2024-08-25T15:00:00Z", "pub_updated": "2024-08-25T15:00:00Z", "pub_published": "pub_published", "pub_revoked": "pub_revoked", "pub_url": "https://www.example.com/path/to/resource", "pub_stale": true, "pub_file_name": "pub_file_name", "pub_published_name": "pub_published_name" } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Share linksDistribution control