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
      List share linksgetCreate a share linkpostGet a share linkgetDelete a share linkdeleteUpdate a share linkpatch
    Publications
    Distribution control
AI
Documents
Knowledge
Creative
Website & content
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

Share links

Links that hand files out, or take files in, without an account.


List share links

GET
https://api.genuineai.app/api/v1
/share-links

Returns the share links the caller created. Every link in the workspace is listed under /admin/share-links, which needs an administrator.

List share links › 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 share links › 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 share links › Responses

Success

​ShareLink[] · 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/share-links
curl https://api.genuineai.app/api/v1/share-links \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "share_id": "00000000-0000-0000-0000-000000000000", "share_name": "share_name", "share_type": "share_type", "share_active": true, "share_created": "2024-08-25T15:00:00Z", "share_updated": "2024-08-25T15:00:00Z", "share_created_by": "share_created_by", "share_expires_at": "2024-08-25T15:00:00Z", "share_file_ids": "share_file_ids", "share_album_id": "00000000-0000-0000-0000-000000000000", "share_options": "share_options", "share_view_count": 0, "share_download_count": 0, "share_max_files": "share_max_files", "share_max_size": 0, "share_created_by_name": "share_created_by_name", "share_file_count": 0, "share_upload_count": 0, "share_last_upload_at": "2024-08-25T15:00:00Z", "share_password_set": true, "share_pre_tags": [ "string" ], "share_album_ids": [ "00000000-0000-0000-0000-000000000000" ], "share_allow_change_tags": true, "share_allow_change_albums": true, "kiosk_url": "https://www.example.com/path/to/resource" } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Create a share link

POST
https://api.genuineai.app/api/v1
/share-links

Two kinds, chosen with share_type. A download link — the default — publishes the files in file_ids for someone outside the workspace to fetch. An upload link runs the other way: it lets someone outside send files in without an account.

Both can carry an expiry and a password.

Create a share link › 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.

Create a share link › Request Body optional

share_type
​string · enum
Enum values:
download
upload
file_ids
​string[]
name
​string · maxLength: 255
expires_at
​string · date-time
password
​string · minLength: 1
album_id
​string · uuid
album_ids
​string[]
pre_tags
​object
max_files
​integer · min: 1 · max: 10000
max_size
​integer · min: 1
allow_change_tags
​boolean
allow_change_albums
​boolean

Create a share link › Responses

Created

A link that publishes files outward, or accepts them inward, without an account.
ShareLink
share_id
​string · uuid
share_name
​string
share_type
​string
share_active
​boolean
share_created
​string · date-time
share_updated
​string · date-time
share_created_by
​string
share_expires_at
​string · date-time
share_file_ids
​string
share_album_id
​string · uuid
share_options
​string
share_view_count
​integer
share_download_count
​integer
share_max_files
​string
share_max_size
​integer
share_created_by_name
​string
share_file_count
​integer
share_upload_count
​integer
share_last_upload_at
​string · date-time
share_password_set
​boolean
share_pre_tags
​string[]
share_album_ids
​string[]
share_allow_change_tags
​boolean
share_allow_change_albums
​boolean
kiosk_url
​string · uri
POST/share-links
curl https://api.genuineai.app/api/v1/share-links \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "share_type": "download", "file_ids": [ "00000000-0000-0000-0000-000000000000" ], "name": "name", "expires_at": "2024-08-25T15:00:00Z", "password": "password", "album_id": "00000000-0000-0000-0000-000000000000", "album_ids": [ "00000000-0000-0000-0000-000000000000" ], "pre_tags": {}, "max_files": 1, "max_size": 1, "allow_change_tags": true, "allow_change_albums": true }'
Example Request Body
{ "share_type": "download", "file_ids": [ "00000000-0000-0000-0000-000000000000" ], "name": "name", "expires_at": "2024-08-25T15:00:00Z", "password": "password", "album_id": "00000000-0000-0000-0000-000000000000", "album_ids": [ "00000000-0000-0000-0000-000000000000" ], "pre_tags": {}, "max_files": 1, "max_size": 1, "allow_change_tags": true, "allow_change_albums": true }
json
Example Responses
{ "share_id": "00000000-0000-0000-0000-000000000000", "share_name": "share_name", "share_type": "share_type", "share_active": true, "share_created": "2024-08-25T15:00:00Z", "share_updated": "2024-08-25T15:00:00Z", "share_created_by": "share_created_by", "share_expires_at": "2024-08-25T15:00:00Z", "share_file_ids": "share_file_ids", "share_album_id": "00000000-0000-0000-0000-000000000000", "share_options": "share_options", "share_view_count": 0, "share_download_count": 0, "share_max_files": "share_max_files", "share_max_size": 0, "share_created_by_name": "share_created_by_name", "share_file_count": 0, "share_upload_count": 0, "share_last_upload_at": "2024-08-25T15:00:00Z", "share_password_set": true, "share_pre_tags": [ "string" ], "share_album_ids": [ "00000000-0000-0000-0000-000000000000" ], "share_allow_change_tags": true, "share_allow_change_albums": true, "kiosk_url": "https://www.example.com/path/to/resource" }
json
application/json

Get a share link

GET
https://api.genuineai.app/api/v1
/share-links/{id}

Pass include=uploaded_files on an upload link to get what has been sent through it so far.

Get a share link › path Parameters

id
​string · uuid · required

Get a share link › query Parameters

include
​string

Get a share link › 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 share link › Responses

Success

A link that publishes files outward, or accepts them inward, without an account.
ShareLink
share_id
​string · uuid
share_name
​string
share_type
​string
share_active
​boolean
share_created
​string · date-time
share_updated
​string · date-time
share_created_by
​string
share_expires_at
​string · date-time
share_file_ids
​string
share_album_id
​string · uuid
share_options
​string
share_view_count
​integer
share_download_count
​integer
share_max_files
​string
share_max_size
​integer
share_created_by_name
​string
share_file_count
​integer
share_upload_count
​integer
share_last_upload_at
​string · date-time
share_password_set
​boolean
share_pre_tags
​string[]
share_album_ids
​string[]
share_allow_change_tags
​boolean
share_allow_change_albums
​boolean
kiosk_url
​string · uri
GET/share-links/{id}
curl https://api.genuineai.app/api/v1/share-links/:id \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "share_id": "00000000-0000-0000-0000-000000000000", "share_name": "share_name", "share_type": "share_type", "share_active": true, "share_created": "2024-08-25T15:00:00Z", "share_updated": "2024-08-25T15:00:00Z", "share_created_by": "share_created_by", "share_expires_at": "2024-08-25T15:00:00Z", "share_file_ids": "share_file_ids", "share_album_id": "00000000-0000-0000-0000-000000000000", "share_options": "share_options", "share_view_count": 0, "share_download_count": 0, "share_max_files": "share_max_files", "share_max_size": 0, "share_created_by_name": "share_created_by_name", "share_file_count": 0, "share_upload_count": 0, "share_last_upload_at": "2024-08-25T15:00:00Z", "share_password_set": true, "share_pre_tags": [ "string" ], "share_album_ids": [ "00000000-0000-0000-0000-000000000000" ], "share_allow_change_tags": true, "share_allow_change_albums": true, "kiosk_url": "https://www.example.com/path/to/resource" }
json
application/json

Delete a share link

DELETE
https://api.genuineai.app/api/v1
/share-links/{id}

The link stops working immediately. The files it pointed at are untouched.

Delete a share link › path Parameters

id
​string · uuid · required

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

Success. No content.

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

Update a share link

PATCH
https://api.genuineai.app/api/v1
/share-links/{id}

Deactivating with share_active: false is how a link is switched off without losing the record of what was shared.

Update a share link › path Parameters

id
​string · uuid · required

Update a share link › 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 a share link › Request Body optional

share_name
​string · maxLength: 255
share_active
​boolean
share_expires_at
​string · date-time
share_password
​string
share_max_files
​integer · min: 1 · max: 10000
share_max_size
​integer · min: 1
share_allow_change_tags
​boolean
share_allow_change_albums
​boolean

Update a share link › Responses

Success

A link that publishes files outward, or accepts them inward, without an account.
ShareLink
share_id
​string · uuid
share_name
​string
share_type
​string
share_active
​boolean
share_created
​string · date-time
share_updated
​string · date-time
share_created_by
​string
share_expires_at
​string · date-time
share_file_ids
​string
share_album_id
​string · uuid
share_options
​string
share_view_count
​integer
share_download_count
​integer
share_max_files
​string
share_max_size
​integer
share_created_by_name
​string
share_file_count
​integer
share_upload_count
​integer
share_last_upload_at
​string · date-time
share_password_set
​boolean
share_pre_tags
​string[]
share_album_ids
​string[]
share_allow_change_tags
​boolean
share_allow_change_albums
​boolean
kiosk_url
​string · uri
PATCH/share-links/{id}
curl https://api.genuineai.app/api/v1/share-links/:id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "share_name": "share_name", "share_active": true, "share_expires_at": "2024-08-25T15:00:00Z", "share_password": "share_password", "share_max_files": 1, "share_max_size": 1, "share_allow_change_tags": true, "share_allow_change_albums": true }'
Example Request Body
{ "share_name": "share_name", "share_active": true, "share_expires_at": "2024-08-25T15:00:00Z", "share_password": "share_password", "share_max_files": 1, "share_max_size": 1, "share_allow_change_tags": true, "share_allow_change_albums": true }
json
Example Responses
{ "share_id": "00000000-0000-0000-0000-000000000000", "share_name": "share_name", "share_type": "share_type", "share_active": true, "share_created": "2024-08-25T15:00:00Z", "share_updated": "2024-08-25T15:00:00Z", "share_created_by": "share_created_by", "share_expires_at": "2024-08-25T15:00:00Z", "share_file_ids": "share_file_ids", "share_album_id": "00000000-0000-0000-0000-000000000000", "share_options": "share_options", "share_view_count": 0, "share_download_count": 0, "share_max_files": "share_max_files", "share_max_size": 0, "share_created_by_name": "share_created_by_name", "share_file_count": 0, "share_upload_count": 0, "share_last_upload_at": "2024-08-25T15:00:00Z", "share_password_set": true, "share_pre_tags": [ "string" ], "share_album_ids": [ "00000000-0000-0000-0000-000000000000" ], "share_allow_change_tags": true, "share_allow_change_albums": true, "kiosk_url": "https://www.example.com/path/to/resource" }
json
application/json

Media tagsPublications