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
    Distribution control
      Get the delivery settingsgetUpdate the delivery settingspatchList geo restrictionsgetAdd a geo restrictionpostGet a geo restrictiongetDelete a restrictiondeleteEdit a geo restrictionpatchList starter catalogsget
AI
Documents
Knowledge
Creative
Website & content
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

Distribution control

The named country sets an asset's public reach is built from, and which of them the whole workspace is held to.


Get the delivery settings

GET
https://api.genuineai.app/api/v1
/admin/delivery-settings

The hostname permanent URLs are issued against and the image drawn over watermarked renditions. An unset hostname means the platform default, which is what almost every workspace uses.

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

Get the delivery settings › 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 the delivery settings › Responses

Success

hostname
​string | null
hostname_default
​string
watermark_file
​string | null · uuid
watermark_name
​string | null
GET/admin/delivery-settings
curl https://api.genuineai.app/api/v1/admin/delivery-settings \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "hostname": "hostname", "hostname_default": "hostname_default", "watermark_file": "00000000-0000-0000-0000-000000000000", "watermark_name": "watermark_name" }
json
application/json

Update the delivery settings

PATCH
https://api.genuineai.app/api/v1
/admin/delivery-settings

Point published URLs at your own subdomain by sending its hostname and a CNAME to the platform hostname; send null to go back to the default. A hostname already claimed by another workspace is refused. Changing it moves the URLs shown for every published asset, and the previous hostname keeps resolving so links already in circulation are not broken.

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

Update the delivery settings › 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.

Update the delivery settings › Request Body optional

hostname
​string · maxLength: 253
watermark_file
​string · uuid

Update the delivery settings › Responses

Success

PATCH/admin/delivery-settings
curl https://api.genuineai.app/api/v1/admin/delivery-settings \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "hostname": "hostname", "watermark_file": "00000000-0000-0000-0000-000000000000" }'
Example Request Body
{ "hostname": "hostname", "watermark_file": "00000000-0000-0000-0000-000000000000" }
json
Example Responses
{}
json
application/json

List geo restrictions

GET
https://api.genuineai.app/api/v1
/admin/geo-restrictions

The workspace's named country sets, with how many published assets reference each. Every country in one is blocked. A set marked geo_workspace_wide blocks on every published asset 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.

List geo restrictions › query Parameters

cursor
​string · maxLength: 512 · pattern: ^[A-Za-z0-9_-]+$
limit
​integer
offset
​integer · min: 0
sort
​string · minLength: 1 · maxLength: 64 · pattern: ^-?[a-z0-9_]+$

List geo restrictions › 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 geo restrictions › Responses

Success

​GeoRestriction[] · 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/admin/geo-restrictions
curl https://api.genuineai.app/api/v1/admin/geo-restrictions \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "geo_id": "00000000-0000-0000-0000-000000000000", "geo_name": "geo_name", "geo_workspace_wide": "geo_workspace_wide", "geo_source": "geo_source", "geo_active": true, "geo_created": "2024-08-25T15:00:00Z", "geo_updated": "2024-08-25T15:00:00Z", "geo_countries": [ "string" ], "geo_usage": 0 } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Add a geo restriction

POST
https://api.genuineai.app/api/v1
/admin/geo-restrictions

Pass template to start from one of the shipped catalogs. It fills the countries when you send none of your own, and records which catalog it came from either way. A catalog is copied once and owned by the workspace from that moment; it is never updated for you.

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

Add a geo restriction › 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.

Add a geo restriction › Request Body

geo_name
​string · minLength: 1 · maxLength: 120 · required
template
​string
geo_countries
​string[]
geo_workspace_wide
​boolean

Add a geo restriction › Responses

Created

A named set of countries that published assets are blocked from reaching.
GeoRestriction
geo_id
​string · uuid
geo_name
​string
geo_workspace_wide
​string
geo_source
​string
geo_active
​boolean
geo_created
​string · date-time
geo_updated
​string · date-time
geo_countries
​string[]
geo_usage
​integer
POST/admin/geo-restrictions
curl https://api.genuineai.app/api/v1/admin/geo-restrictions \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "geo_name": "geo_name", "template": "template", "geo_countries": [ "string" ], "geo_workspace_wide": true }'
Example Request Body
{ "geo_name": "geo_name", "template": "template", "geo_countries": [ "string" ], "geo_workspace_wide": true }
json
Example Responses
{ "geo_id": "00000000-0000-0000-0000-000000000000", "geo_name": "geo_name", "geo_workspace_wide": "geo_workspace_wide", "geo_source": "geo_source", "geo_active": true, "geo_created": "2024-08-25T15:00:00Z", "geo_updated": "2024-08-25T15:00:00Z", "geo_countries": [ "string" ], "geo_usage": 0 }
json
application/json

Get a geo restriction

GET
https://api.genuineai.app/api/v1
/admin/geo-restrictions/{id}

One restriction and the countries it blocks, as ISO 3166-1 alpha-2 codes.

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

Get a geo restriction › path Parameters

id
​string · uuid · required

Get a geo restriction › 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 geo restriction › Responses

Success

A named set of countries that published assets are blocked from reaching.
GeoRestriction
geo_id
​string · uuid
geo_name
​string
geo_workspace_wide
​string
geo_source
​string
geo_active
​boolean
geo_created
​string · date-time
geo_updated
​string · date-time
geo_countries
​string[]
geo_usage
​integer
GET/admin/geo-restrictions/{id}
curl https://api.genuineai.app/api/v1/admin/geo-restrictions/:id \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "geo_id": "00000000-0000-0000-0000-000000000000", "geo_name": "geo_name", "geo_workspace_wide": "geo_workspace_wide", "geo_source": "geo_source", "geo_active": true, "geo_created": "2024-08-25T15:00:00Z", "geo_updated": "2024-08-25T15:00:00Z", "geo_countries": [ "string" ], "geo_usage": 0 }
json
application/json

Delete a restriction

DELETE
https://api.genuineai.app/api/v1
/admin/geo-restrictions/{id}

Deactivates the restriction and stops it fencing anything. Assets referencing it keep serving.

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

Delete a restriction › path Parameters

id
​string · uuid · required

Delete a restriction › 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 restriction › Responses

Success. No content.

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

Edit a geo restriction

PATCH
https://api.genuineai.app/api/v1
/admin/geo-restrictions/{id}

Editing the countries or the workspace-wide flag reaches every asset the restriction governs on the next edge refresh, within about a minute. No asset is rewritten.

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

Edit a geo restriction › path Parameters

id
​string · uuid · required

Edit a geo restriction › 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.

Edit a geo restriction › Request Body optional

geo_name
​string · minLength: 1 · maxLength: 120
geo_countries
​string[]
geo_workspace_wide
​boolean

Edit a geo restriction › Responses

Success

A named set of countries that published assets are blocked from reaching.
GeoRestriction
geo_id
​string · uuid
geo_name
​string
geo_workspace_wide
​string
geo_source
​string
geo_active
​boolean
geo_created
​string · date-time
geo_updated
​string · date-time
geo_countries
​string[]
geo_usage
​integer
PATCH/admin/geo-restrictions/{id}
curl https://api.genuineai.app/api/v1/admin/geo-restrictions/:id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "geo_name": "geo_name", "geo_countries": [ "string" ], "geo_workspace_wide": true }'
Example Request Body
{ "geo_name": "geo_name", "geo_countries": [ "string" ], "geo_workspace_wide": true }
json
Example Responses
{ "geo_id": "00000000-0000-0000-0000-000000000000", "geo_name": "geo_name", "geo_workspace_wide": "geo_workspace_wide", "geo_source": "geo_source", "geo_active": true, "geo_created": "2024-08-25T15:00:00Z", "geo_updated": "2024-08-25T15:00:00Z", "geo_countries": [ "string" ], "geo_usage": 0 }
json
application/json

List starter catalogs

GET
https://api.genuineai.app/api/v1
/admin/geo-restrictions/templates

Shipped country sets for common regimes, offered as a starting point to copy and verify against the workspace's own trade compliance requirements. They are static data, not a maintained authority.

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

List starter catalogs › 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 starter catalogs › Responses

Success

​object[]
id
​string
name
​string
countries
​string[]
GET/admin/geo-restrictions/templates
curl https://api.genuineai.app/api/v1/admin/geo-restrictions/templates \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
[ { "id": "id", "name": "name", "countries": [ "string" ] } ]
json
application/json

PublicationsAgents