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
Knowledge
Creative
Website & content
Automation
Customer channels
Administration
    Users
    Roles
    Workspace settings
    Audit
    Storage
    Usage breakdown
    Media tag groups
    Media status flows
      List flowsgetCreate a flowpostGet a flowgetUpdate a flowputDelete a flowdelete
    Issued share links
    Social connections
    Social calendar
Schemas
GenuineAI API
GenuineAI API

Media status flows

The statuses media moves through before the whole workspace sees it, and who may move it — the review pipeline behind the media library.


List flows

GET
https://api.genuineai.app/api/v1
/admin/media-status-flows

Returns the workspace's media status flows, each with its statuses. At most one is active at a time.

List flows › query Parameters

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

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

Success

​MediaStatusFlow[]
The statuses media moves through before the whole workspace sees it — who sees an item in each status, and who may move it on.
MediaStatusFlow
sm_id
​string · uuid
sm_active
​boolean
sm_created
​string · date-time
sm_updated
​string · date-time
sm_object_criteria
​object
​object[]

The moves the machine allows. roles and users are alternatives — holding one of the roles or being one of the users is enough — and naming neither leaves the move open to anyone who can write the record.

sm_metadata
​object
​object[]

The flow's statuses, in display order.

GET/admin/media-status-flows
curl https://api.genuineai.app/api/v1/admin/media-status-flows \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
[ { "sm_id": "00000000-0000-0000-0000-000000000000", "sm_active": true, "sm_created": "2024-08-25T15:00:00Z", "sm_updated": "2024-08-25T15:00:00Z", "sm_object_criteria": {}, "sm_transitions": [ { "from": "00000000-0000-0000-0000-000000000000", "to": "00000000-0000-0000-0000-000000000000", "roles": [ "00000000-0000-0000-0000-000000000000" ], "users": [ "00000000-0000-0000-0000-000000000000" ], "label": "label", "back": true, "notify": true, "actions": [ "string" ] } ], "sm_metadata": {}, "states": [ { "si_id": "00000000-0000-0000-0000-000000000000", "si_label": "si_label", "si_color": "si_color", "si_order": 0, "si_initial": true, "si_final": true, "si_note": true, "si_roles": {}, "si_active": true } ] } ]
json
application/json

Create a flow

POST
https://api.genuineai.app/api/v1
/admin/media-status-flows

Defines the statuses media moves through and who may move it. Answers 409 while an active flow exists — update or delete that one instead.

Create a flow › 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 flow › Request Body

​object[] · required
​array
sm_name
​string
sm_default
​boolean

Create a flow › Responses

Created

The statuses media moves through before the whole workspace sees it — who sees an item in each status, and who may move it on.
MediaStatusFlow
sm_id
​string · uuid
sm_active
​boolean
sm_created
​string · date-time
sm_updated
​string · date-time
sm_object_criteria
​object
​object[]

The moves the machine allows. roles and users are alternatives — holding one of the roles or being one of the users is enough — and naming neither leaves the move open to anyone who can write the record.

sm_metadata
​object
​object[]

The flow's statuses, in display order.

POST/admin/media-status-flows
curl https://api.genuineai.app/api/v1/admin/media-status-flows \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "states": [ { "si_label": "si_label" } ], "transitions": [ {} ], "sm_name": "sm_name", "sm_default": true }'
Example Request Body
{ "states": [ { "si_label": "si_label" } ], "transitions": [ {} ], "sm_name": "sm_name", "sm_default": true }
json
Example Responses
{ "sm_id": "00000000-0000-0000-0000-000000000000", "sm_active": true, "sm_created": "2024-08-25T15:00:00Z", "sm_updated": "2024-08-25T15:00:00Z", "sm_object_criteria": {}, "sm_transitions": [ { "from": "00000000-0000-0000-0000-000000000000", "to": "00000000-0000-0000-0000-000000000000", "roles": [ "00000000-0000-0000-0000-000000000000" ], "users": [ "00000000-0000-0000-0000-000000000000" ], "label": "label", "back": true, "notify": true, "actions": [ "string" ] } ], "sm_metadata": {}, "states": [ { "si_id": "00000000-0000-0000-0000-000000000000", "si_label": "si_label", "si_color": "si_color", "si_order": 0, "si_initial": true, "si_final": true, "si_note": true, "si_roles": {}, "si_active": true } ] }
json
application/json

Get a flow

GET
https://api.genuineai.app/api/v1
/admin/media-status-flows/{id}

Returns the flow with its statuses, its transitions, and the roles each transition requires.

Get a flow › path Parameters

id
​string · uuid · required

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

Success

The statuses media moves through before the whole workspace sees it — who sees an item in each status, and who may move it on.
MediaStatusFlow
sm_id
​string · uuid
sm_active
​boolean
sm_created
​string · date-time
sm_updated
​string · date-time
sm_object_criteria
​object
​object[]

The moves the machine allows. roles and users are alternatives — holding one of the roles or being one of the users is enough — and naming neither leaves the move open to anyone who can write the record.

sm_metadata
​object
​object[]

The flow's statuses, in display order.

GET/admin/media-status-flows/{id}
curl https://api.genuineai.app/api/v1/admin/media-status-flows/:id \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "sm_id": "00000000-0000-0000-0000-000000000000", "sm_active": true, "sm_created": "2024-08-25T15:00:00Z", "sm_updated": "2024-08-25T15:00:00Z", "sm_object_criteria": {}, "sm_transitions": [ { "from": "00000000-0000-0000-0000-000000000000", "to": "00000000-0000-0000-0000-000000000000", "roles": [ "00000000-0000-0000-0000-000000000000" ], "users": [ "00000000-0000-0000-0000-000000000000" ], "label": "label", "back": true, "notify": true, "actions": [ "string" ] } ], "sm_metadata": {}, "states": [ { "si_id": "00000000-0000-0000-0000-000000000000", "si_label": "si_label", "si_color": "si_color", "si_order": 0, "si_initial": true, "si_final": true, "si_note": true, "si_roles": {}, "si_active": true } ] }
json
application/json

Update a flow

PUT
https://api.genuineai.app/api/v1
/admin/media-status-flows/{id}

Replaces the flow's statuses and transitions. Files already sitting in a status the new definition drops keep that value until something moves them.

Update a flow › path Parameters

id
​string · uuid · required

Update a flow › 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 flow › Request Body

​object[] · required
​array
sm_name
​string
sm_default
​boolean

Update a flow › Responses

Success

The statuses media moves through before the whole workspace sees it — who sees an item in each status, and who may move it on.
MediaStatusFlow
sm_id
​string · uuid
sm_active
​boolean
sm_created
​string · date-time
sm_updated
​string · date-time
sm_object_criteria
​object
​object[]

The moves the machine allows. roles and users are alternatives — holding one of the roles or being one of the users is enough — and naming neither leaves the move open to anyone who can write the record.

sm_metadata
​object
​object[]

The flow's statuses, in display order.

PUT/admin/media-status-flows/{id}
curl https://api.genuineai.app/api/v1/admin/media-status-flows/:id \ --request PUT \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "states": [ { "si_label": "si_label" } ], "transitions": [ {} ], "sm_name": "sm_name", "sm_default": true }'
Example Request Body
{ "states": [ { "si_label": "si_label" } ], "transitions": [ {} ], "sm_name": "sm_name", "sm_default": true }
json
Example Responses
{ "sm_id": "00000000-0000-0000-0000-000000000000", "sm_active": true, "sm_created": "2024-08-25T15:00:00Z", "sm_updated": "2024-08-25T15:00:00Z", "sm_object_criteria": {}, "sm_transitions": [ { "from": "00000000-0000-0000-0000-000000000000", "to": "00000000-0000-0000-0000-000000000000", "roles": [ "00000000-0000-0000-0000-000000000000" ], "users": [ "00000000-0000-0000-0000-000000000000" ], "label": "label", "back": true, "notify": true, "actions": [ "string" ] } ], "sm_metadata": {}, "states": [ { "si_id": "00000000-0000-0000-0000-000000000000", "si_label": "si_label", "si_color": "si_color", "si_order": 0, "si_initial": true, "si_final": true, "si_note": true, "si_roles": {}, "si_active": true } ] }
json
application/json

Delete a flow

DELETE
https://api.genuineai.app/api/v1
/admin/media-status-flows/{id}

Stops media being governed. Files keep the status they are in.

Delete a flow › path Parameters

id
​string · uuid · required

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

Success. No content.

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

Media tag groupsIssued share links