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
Start here
QuickstartAuthentication
Working with the API
Objects and fieldsErrorsPaginationRate limitsMaintenance windowsVersioning and deprecation
Security
Security and tenancyRoles and permissionsPermission referenceSharing and access
Your plan
Plans and modules
Guides

Permission reference

Every permission the API recognizes, grouped by what it governs. Nearly every operation in the reference names the permission it requires; this page works in the other direction, from a permission to what it opens.

How to read a row

  • Permission. The string a role grants and a key is scoped to. It reads <resource>:<verb>, where the resource is the noun the API serves it under. view covers reading one record and listing many, and delete is the only destructive verb.
  • Lets someone. What holding it opens, in the app and over the API alike.

Some permissions need a module on the workspace's plan as well as the role. Where that applies, the note under the table says so; a table with no such note needs only the role.

A module is enforced in one of two ways, and the refusal code tells you which. An operation that names a module answers license_required. Elsewhere the permission itself is dropped from the session before the request is made, so the answer is forbidden: the role grants it, and the session does not hold it. Where a module covers part of a resource rather than all of it (building an agent rather than using one), the note under that table says which part.

A few operations require no permission at all: a shared catalog, the list a chat user picks an agent or a saved prompt from, and anything scoped to the caller's own session. They name no permission in the reference, and nothing on this page opens or closes them.

See roles and permissions for the grammar, and for how roles, plans and key scope combine into what a request may do.

Conversations

PermissionLets someone
thread:viewOpen a conversation and list them.
thread:createStart one.
thread:editRename one, change who it is shared with, or remove an attachment.
thread:deleteDelete one.
thread:uploadAttach a file to a conversation.
message:viewRead a conversation's messages.
message:createSend a message, which is what runs the model.
space:viewOpen a space and list them.
space:createCreate a space.
space:editEdit a space.
space:deleteDelete a space.

message:create is the permission that spends credits. Attachments need no permission of their own to read: whoever can open the conversation can open what was sent to it.

Agents and prompts

PermissionLets someone
agent:viewOpen an agent's configuration and its change history.
agent:createCreate an agent.
agent:editChange an agent's instructions, model, and tools.
agent:deleteDelete an agent.
agent:knowledge:editChoose which knowledge bases an agent reads.
assist:runUse AI assistance inside an editor: rewrite the text in a field, redraft a document, generate captions, pick photos.
prompt:viewOpen a saved prompt or tool, and its history.
prompt:createCreate one.
prompt:editEdit one, and file it under a category.
prompt:deleteDelete one.
prompt:category:editManage the categories saved prompts are filed under.
wildcard:createCreate the wildcards prompts are assembled from.
wildcard:editEdit them.
wildcard:deleteDelete them.

agent:edit amounts to "may change what the AI says on the organization's behalf": it governs the system prompt, the model, and the tools an agent can call. Running an agent in a conversation is not a separate permission. That is chatting, gated by thread:* with message:create.

assist:run is a single permission rather than one per surface because the helpers have no surface of their own; the rewrite button appears on text fields throughout the product. It is separable from the edit permissions alongside it because it spends credits, so a workspace can let someone edit designs without letting them spend.

The module splits along the same line as the permissions: building agents and prompts needs module-agent-editor, using them does not. agent:view and prompt:view are on every plan, and listing the agents, prompts and wildcards a workspace has needs no permission at all, because that list is what the chat picker reads.

Knowledge bases

PermissionLets someone
knowledge-base:viewOpen a knowledge base, list them, and read the documents inside.
knowledge-base:createCreate one.
knowledge-base:editChange its schema and settings.
knowledge-base:deleteDelete one, or a document in it.
knowledge-base:uploadAdd a document to one.
knowledge-base:writeChange a document's contents, restore an earlier version, or rebuild what was indexed from it.
knowledge-base:importBulk-import records.
knowledge-base:exportBulk-export records.
knowledge-base:crawlFill a knowledge base from a website.
knowledge-base:record:viewRead the records inside a knowledge base.
knowledge-base:record:createAdd a record.
knowledge-base:record:editEdit a record.
knowledge-base:record:deleteDelete a record.

The split is deliberate: knowledge-base:edit governs the base's own structure, knowledge-base:write governs what its documents say, and knowledge-base:record:* governs the structured data inside it. A contributor gets the last two without the first.

The module falls on the same line. module-ds-editor is the knowledge-base builder, so only knowledge-base:create and knowledge-base:edit require it. Reading a base, filling it, and changing what its documents and records say are on every plan.

Objects

PermissionLets someone
object:viewOpen a record and list them, read its relations, and browse the classification schemes.
object:createCreate a record, or send one by business key so an upstream system can create and update in one call.
object:editChange a record's attributes, link it to other records, files and classification nodes, and move it through its lifecycle.
object:deleteDelete a record.
object:taxonomy:editManage the classification schemes and their nodes.
object:schema:editDefine the types of record the workspace keeps, their attributes, and the lifecycle flow they move through.

All six need module-objects, and every operation names it, so a workspace without the module answers license_required rather than forbidden.

Media library

PermissionLets someone
media:viewBrowse the library, its previews, and its metadata.
media:uploadAdd a file to the library.
media:downloadGet the original file, and start bulk download jobs.
media:editEdit media records (tags, attribution, analysis results) and manage versions.
media:deleteDelete media from the library.
media:analyzeRun AI analysis over a file, and try analysis schemas.
media:publishRelease a file to its permanent public URL, and withdraw it again.
media:tag:createAdd a tag to a tag group that already exists, while filing a file.
media:face:viewSee the people recognized in photographs.
media:face:editName a person, merge two people, confirm or reject a suggestion.
media:face:searchFind every photo a person appears in.
stock-photo:viewSearch the stock photography library.
stock-photo:importCopy a stock photo into the workspace.

media:download is the only download permission in the catalog. Everywhere else, reading a resource includes its content. A library is different: browsing previews and taking full-resolution originals with their embedded metadata are separate decisions, so media:view covers the first and media:download the second.

Configuring the library (the tag structure itself, the status flow, and duplicate resolution) is workspace administration and sits under admin: below. media:tag:create is the exception: adding a value to a group that already exists happens while filing a file, so it belongs to the person doing the filing rather than to an administrator.

media:analyze runs the workspace's analysis over a file on every plan. Trying a schema against a file before committing to it needs module-custom-analysis as well, as does managing the schemas themselves, which is admin:media-analysis:edit, under field definitions.

The two stock-photo:* permissions are a pair in practice: searching exists to feed the import, and importing needs a search result to work from. stock-photo:import is not a substitute for media:upload: a photo imported without naming an object it belongs to lands in the library, and that still needs media:upload.

media:publish is separate from media:edit the way media:download is separate from media:view: changing an asset and putting it on the public internet are different decisions. Withdrawing a published asset is covered by the same permission. It is not the only one that lets an asset reach people outside the workspace (share-link:create and social:publish do too), so a role that withholds it usually means to withhold those as well.

The three media:face:* permissions need module-face-recognition and media:publish needs module-publication. The rest of the table is on every plan.

Albums and sharing

PermissionLets someone
album:viewOpen an album and list them.
album:createCreate an album, including a smart album.
album:editRename an album and change its settings or filters.
album:deleteDelete an album.
album:curatePut files into an album and take them out.
share-link:viewSee the share links a workspace has issued.
share-link:createCreate a share link.
share-link:editChange a link's expiry, password, or contents.
share-link:deleteRevoke a share link.

Share links reach an unauthenticated audience, so share-link:create decides who may publish workspace content outward. Treat it as more consequential than the rest of this table.

The four share-link:* permissions need module-media-sharing. Albums are on every plan.

Documents

PermissionLets someone
document:viewBrowse the document library and open a document.
document:uploadAdd a document to the library.
document:editRename a document, tag it, edit its extracted text, and deprecate or restore it.
document:deleteDelete a document and its versions.
document:downloadDownload the original bytes.
document:tag:createAdd a value to an existing document tag group while filing something.
document:relation-type:editDefine the relationship types documents can be linked with, such as a translation and its source.
document-folder:viewSee the folder tree.
document-folder:createCreate a folder, including one that fills itself from a saved filter.
document-folder:editRename a folder or move it under a different parent.
document-folder:deleteDelete a folder. The documents in it stay in the library.
document-folder:curatePut documents into a folder and take them out.

The document library is separate from the media library and so are its grants: a key holding media:view cannot read a data sheet, and one holding document:view cannot browse the photo library. That separation is the point of the module rather than a side effect, since the two hold different kinds of confidential material.

document:edit covers deprecation, which is the verb worth understanding before granting it. Deprecating a document removes its indexed passages, so an agent stops retrieving it, while the file, its versions and its download links are all left intact. It is a way to retire a superseded data sheet without breaking whoever still has the link, and it is reversible.

Linking two documents ("this is the Spanish translation of that") is part of document:edit, and needs it on both documents. Deciding which kinds of link exist is the separate document:relation-type:edit, because a relationship type is workspace vocabulary rather than a change to any one document.

All twelve need module-documents.

Designs and studio

PermissionLets someone
design:viewOpen a design and list them.
design:createCreate a design, or one from a template.
design:editChange a design's layers and layout, and publish it as a template.
design:deleteDelete a design.
design:fillFill a template's editable fields without touching the layout.
design:contributeCreate designs from approved templates only.
design:category:editManage the categories designs are filed under.
studio:image:generateGenerate an image.
infographic:viewOpen a generated infographic and list them.
infographic:generateGenerate one, or refresh one from its data.
infographic:editRename one, change its refresh schedule, or change who can see it.
infographic:deleteDelete one.

fill and contribute exist so that people producing day-to-day artwork cannot change the brand-approved layout it is built on. The two generate permissions spend credits, which is why they are separate from the permissions that browse the results.

The design editor is the module here; infographics and Studio image generation are not. Every design operation requires module-design, and turning an infographic into a design does too. Generating an infographic or an image is on every plan, and what stops it is the credit balance rather than the plan.

Presentations

PermissionLets someone
presentation:viewOpen a presentation.
presentation:createGenerate a presentation.
presentation:editEdit a presentation.
presentation:deleteDelete a presentation.
presentation:template:editManage the templates presentations are generated from.

Every permission in this table needs module-ppt.

Website content

PermissionLets someone
content:viewOpen a page, and list sites and pages.
content:createAdd a site or a page.
content:editEdit page content.
content:deleteDelete a site or page.
content:generateHave the AI write a page, a brief, or a whole site.
content:reviewMove a page through the approval workflow, including approving it.
content:workflow:editSet up the approval workflow: its steps, and who may make each move.
content:comment:viewRead the comments on a page.
content:comment:createComment on a page, or reply to a comment.
content:comment:deleteDelete a comment.

Every permission in this table needs module-content-editor.

Social

PermissionLets someone
social:viewSee which accounts are connected, and what has been sent or scheduled.
social:publishSend a post to a connected account, schedule one, or cancel one.

Both permissions need module-social-post.

social:view covers reading the connected accounts, because whoever sends a post has to choose where it goes. Connecting or disconnecting one writes a credential the whole workspace posts under, so that is admin:social:edit, under workspace administration.

Despite the name, social:publish has nothing to do with media:publish. One sends a post to an outside platform; the other releases a file on a URL this workspace serves.

Workflows

PermissionLets someone
workflow:viewOpen a workflow and its steps, and list them.
workflow:createCreate one.
workflow:editChange its steps.
workflow:deleteDelete one.
workflow:deployCompile and deploy it so it can run.
workflow:executeStart a run.
workflow:instance:viewOpen a run and its steps, and list them.

workflow:deploy and workflow:execute are separate on purpose: building a workflow and putting it into production are different decisions. Neither is gated on a module at the API. The role is the whole gate.

Tasks and routines

PermissionLets someone
task:viewOpen a task and list them.
task:createCreate one.
task:editEdit one, approve it, or hand it to autopilot.
task:deleteDelete one.
task:email:sendEmail a task's result out of the workspace.
scheduled-job:viewOpen a routine and list them.
scheduled-job:editChange when it runs.
scheduled-job:executeRun it now.

Every operation under /tasks requires module-tasks, the daily briefing and autopilot included. scheduled-job:* names no module, so the routines that start work on a schedule stay available to a workspace without it. One operation sits outside both: POST /workflows/tasks/{id}/complete, the callback a workflow step uses to close a task it created, takes task:edit and names no module.

Field definitions

Four things in the platform are a set of fields someone defined: the form a person fills in to complete a task, the template a knowledge base records its items against, the schema that tells the analysis what to detect in an image, and the schema that says what attributes a kind of object carries. Each is its own collection, and each is granted separately.

PermissionLets someone
task:form:editCreate, change and delete the forms tasks are completed with.
knowledge-base:schema:editCreate, change and delete knowledge templates.
admin:media-analysis:editCreate, change and delete media analysis schemas, and make one active.
object:schema:editCreate, change and delete object schemas, and the kinds they declare.

Each covers creating, changing and deleting together. A workspace that lets someone add a field but not remove one is a distinction nobody has asked for, and the decision being granted is the same one either way: may this person define the shape.

Reading is not granted separately at all. A set of fields is the shape of the records rendered against it, so anyone who can open those records can read the definition behind them. What varies is the module: analysis schemas need module-custom-analysis and object schemas need module-objects, both named on the operations themselves, while task forms and knowledge templates need none.

Customer channels

PermissionLets someone
chat-widget:viewOpen a widget, its conversations, and its leads.
chat-widget:createCreate a widget.
chat-widget:editChange its behavior, appearance, and agent.
chat-widget:deleteDelete a widget.
voice-agent:viewSee a voice agent's configuration and analytics.
voice-agent:createCreate one.
voice-agent:editChange what it says and how it behaves.
voice-agent:deleteDelete one.
voice-agent:number:editBuy and release its phone numbers.
voice-agent:call:viewRead call transcripts and listen to recordings.

The chat-widget:* permissions need module-chat-widget, and the voice-agent:* permissions need module-voice-agent.

The voice permissions are split because they represent different decisions. The people who build an agent are not always the people allowed to hear what customers said to it, and buying a phone number both spends money and changes a published number.

Integrations

PermissionLets someone
integration:viewSee which third-party systems are connected and what they offer.
integration:createConnect one.
integration:editChange a connection.
integration:deleteDisconnect one.

Every permission in this table needs module-external-data.

Extensions

PermissionLets someone
extension:viewSee the extensions enabled in the workspace and the events sent to them.
extension:installEnable an extension and choose what it may do, disable or remove it, and issue it a new key or signing secret.
extension:developConnect a dev build to an extension in a sandbox workspace and open the Workbench.
extension-state:readRead the documents extensions keep in the workspace.
extension-state:writeWrite and delete them.

All five need module-extensions. An extension acting with its own key or with a token minted for it reaches only its own documents, whatever it holds.

Usage and notifications

PermissionLets someone
usage:viewSee the workspace's own credit balance and usage totals.
notification:viewReceive and read notifications.

usage:view is the workspace total, which anyone spending credits needs to see. The breakdown by person, model and module is admin:usage:view, below.

Workspace administration

Everything under admin: governs the workspace itself. There is no umbrella permission: each operation requires exactly the grant it needs, so a role can be given user administration and nothing else.

PermissionLets someone
admin:user:viewList the people in a workspace and open their records.
admin:user:createInvite someone.
admin:user:editChange someone's roles, permissions, or status.
admin:role:viewList roles and see what they grant.
admin:role:createCreate a role.
admin:role:editChange what a role grants.
admin:settings:viewRead workspace defaults, such as the default agent.
admin:settings:editChange them.
admin:audit:viewRead the audit history: who changed what, and what it looked like before.
admin:log:viewRead the API access log.
admin:security-event:viewRead sign-in and security activity for everyone in the workspace.
admin:usage:viewSee usage broken down by person, model, and module.
admin:storage:viewSee what is stored and what could be reclaimed.
admin:share-link:viewSee every share link the workspace has issued, not only your own.
admin:media-tag:viewRead the media tag structure, the groups and their values.
admin:media-tag:editDefine that structure: add, rename and remove groups and values, and manage the hashtag list.
admin:media-status-flow:viewSee the statuses media moves through and the transitions between them.
admin:media-status-flow:editChange them.
admin:media:deduplicateFind duplicate media and resolve the groups.
admin:geo-restriction:viewRead the named country sets that published assets can be blocked from reaching.
admin:geo-restriction:editCreate and change them, and set which of them every published asset is held to.
admin:social:editConnect and disconnect social accounts.
admin:billing:editChange the plan, buy credits, manage billing.
admin:migrationRun bulk imports from another system.
admin:onboarding:runRun the first-run setup wizard and seed demo data.

admin:user:edit and admin:role:edit are the two permissions that can change anyone else's access, and admin:role:edit is the stronger of them, because it can widen a role that other people already hold. Both are audited.

Resolving a duplicate group deletes files, so it requires media:delete alongside admin:media:deduplicate. Listing the groups needs only the administration permission.

Two entries here need a module as well. admin:social:edit follows the rest of social posting onto module-social-post, and the admin:geo-restriction:* pair follows publishing onto module-publication.

Permissions with no published operation

These gate application surfaces rather than operations a caller integrates against, so they never appear on an operation in the reference. They still matter when you design a role.

PermissionLets someone
api-key:viewSee the workspace's keys and when they were last used.
api-key:createIssue an API key.
api-key:revokeRevoke a key.
saved-view:viewOpen the filter views kept on list screens.
saved-view:createSave one.
saved-view:editEdit one.
saved-view:deleteDelete one.

The three api-key:* permissions need module-api; the saved views are on every plan.

A key can only be scoped down from its creator's own access, so api-key:create does not let someone grant themselves more permission than they have. It does let them hand out what they already hold, so grant it accordingly.

Four more behave the same way. They are listed in the sections above rather than here, because that is where you look for them when you build a role:

PermissionListed under
notification:viewUsage and notifications
admin:billing:editWorkspace administration
admin:migrationWorkspace administration
admin:onboarding:runWorkspace administration

Billing, provisioning and bulk imports from another system are things a person does in the app rather than surfaces anyone integrates against.

Files

There are no file permissions. A file is governed by whatever it belongs to:

A file inIs governed by
The media library, and what the platform generated without filing it anywheremedia:*. media:view for the record and preview, media:download for the original
A knowledge baseknowledge-base:*. view reads the document, write changes it
A conversationThe conversation. Whoever can open the thread can open its attachments; thread:upload adds one
A design, prompt or presentationThat resource's own permissions
A task formNothing further to read it. A form's uploads are as readable as the form itself; task:form:edit changes or removes one

A file operation therefore lists every permission that could apply to it, and which one applies depends on where that file lives. A key scoped to media:view and media:download reads the media library and provably nothing else.

Not included

Permissions that govern cross-workspace tooling are not part of this API and are not documented here.

Last modified on October 8, 2026
Roles and permissionsSharing and access
On this page
  • How to read a row
  • Conversations
  • Agents and prompts
  • Knowledge bases
  • Objects
  • Media library
  • Albums and sharing
  • Documents
  • Designs and studio
  • Presentations
  • Website content
  • Social
  • Workflows
  • Tasks and routines
  • Field definitions
  • Customer channels
  • Integrations
  • Extensions
  • Usage and notifications
  • Workspace administration
  • Permissions with no published operation
  • Files
  • Not included