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
    Website content
    Content schemas
      List librariesgetCreate a librarypostDelete a librarydeleteUpdate a librarypatchFork a librarypostList content schemasgetCreate a content schemapostGet a content schemagetDelete a content schemadeleteUpdate a content schemapatchImport content schemaspostGet meta data defaultsget
    Content approval flows
    CMS sync
    Social
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

Content schemas

The field shapes a page type can be generated into — not page designs.


List libraries

GET
https://api.genuineai.app/api/v1
/content-schema-libraries

Every library in the workspace with its schema count and the sites generating from it. Pass ?sitemap= to also learn which library that site currently uses.

List libraries › query Parameters

sitemap
​string · uuid

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

Success

No data returned
GET/content-schema-libraries
curl https://api.genuineai.app/api/v1/content-schema-libraries \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

Create a library

POST
https://api.genuineai.app/api/v1
/content-schema-libraries

Creates a library to group content schemas. A library is a folder, not a namespace — schemas keep working wherever they are filed.

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

tgrp_name
​string · minLength: 1 · required
sitemap
​string · uuid

Create a library › Responses

Created

No data returned
POST/content-schema-libraries
curl https://api.genuineai.app/api/v1/content-schema-libraries \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "tgrp_name": "tgrp_name", "sitemap": "00000000-0000-0000-0000-000000000000" }'
Example Request Body
{ "tgrp_name": "tgrp_name", "sitemap": "00000000-0000-0000-0000-000000000000" }
json
Example Responses
No example specified for this content type

Delete a library

DELETE
https://api.genuineai.app/api/v1
/content-schema-libraries/{id}

Soft delete. Sites pointing at the library are released first, so a deactivated library's schemas cannot stay in use through a stale pointer.

Delete a library › path Parameters

id
​string · uuid · required

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

Success. No content.

No data returned
DELETE/content-schema-libraries/{id}
curl https://api.genuineai.app/api/v1/content-schema-libraries/: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 library

PATCH
https://api.genuineai.app/api/v1
/content-schema-libraries/{id}

Renames or re-describes the library. The schemas it holds are untouched.

Update a library › path Parameters

id
​string · uuid · required

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

tgrp_name
​string · minLength: 1

Update a library › Responses

Success

No data returned
PATCH/content-schema-libraries/{id}
curl https://api.genuineai.app/api/v1/content-schema-libraries/:id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "tgrp_name": "tgrp_name" }'
Example Request Body
{ "tgrp_name": "tgrp_name" }
json
Example Responses
No example specified for this content type

Fork a library

POST
https://api.genuineai.app/api/v1
/content-schema-libraries/{id}/duplicate

Copies a library and its schemas as an authored one, with no link back to the CMS it came from — so a later schema pull cannot overwrite the copy. This is how a site starts from a mirrored schema set and then diverges from it.

Fork a library › path Parameters

id
​string · uuid · required

Fork a library › 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.

Fork a library › Request Body optional

tgrp_name
​string · minLength: 1
sitemap
​string · uuid

Fork a library › Responses

Success

No data returned
POST/content-schema-libraries/{id}/duplicate
curl https://api.genuineai.app/api/v1/content-schema-libraries/:id/duplicate \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "tgrp_name": "tgrp_name", "sitemap": "00000000-0000-0000-0000-000000000000" }'
Example Request Body
{ "tgrp_name": "tgrp_name", "sitemap": "00000000-0000-0000-0000-000000000000" }
json
Example Responses
No example specified for this content type

List content schemas

GET
https://api.genuineai.app/api/v1
/content-schemas

A content schema is the field shape of a page type — not a page design. Scope with ?group= for one library, or ?sitemap= for the library that site generates from. With neither, every schema in the workspace is listed.

List content schemas › query Parameters

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

List content schemas › 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 content schemas › Responses

Success

​ContentSchema[] · 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/content-schemas
curl https://api.genuineai.app/api/v1/content-schemas \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "tpl_id": "00000000-0000-0000-0000-000000000000", "tpl_active": true, "tpl_created": "2024-08-25T15:00:00Z", "tpl_updated": "2024-08-25T15:00:00Z", "tpl_group": "tpl_group", "tpl_name": "tpl_name", "tpl_component": "tpl_component", "tpl_nestable": "tpl_nestable", "tpl_fields": "tpl_fields", "tpl_metadata": {} } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Create a content schema

POST
https://api.genuineai.app/api/v1
/content-schemas

Defines the fields a page type can be generated into. It describes a shape, not a design — nothing here decides how a page looks.

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

tpl_name
​string · minLength: 1 · required
tpl_group
​string · uuid
sitemap
​string · uuid
tpl_component
​string
tpl_nestable
​boolean
​array
​object

Create a content schema › Responses

Created

No data returned
POST/content-schemas
curl https://api.genuineai.app/api/v1/content-schemas \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "tpl_group": "00000000-0000-0000-0000-000000000000", "sitemap": "00000000-0000-0000-0000-000000000000", "tpl_name": "tpl_name", "tpl_component": "tpl_component", "tpl_nestable": true, "tpl_fields": [ {} ], "tpl_metadata": { "metaTitleInstructions": "metaTitleInstructions", "metaDescriptionInstructions": "metaDescriptionInstructions" } }'
Example Request Body
{ "tpl_group": "00000000-0000-0000-0000-000000000000", "sitemap": "00000000-0000-0000-0000-000000000000", "tpl_name": "tpl_name", "tpl_component": "tpl_component", "tpl_nestable": true, "tpl_fields": [ {} ], "tpl_metadata": { "metaTitleInstructions": "metaTitleInstructions", "metaDescriptionInstructions": "metaDescriptionInstructions" } }
json
Example Responses
No example specified for this content type

Get a content schema

GET
https://api.genuineai.app/api/v1
/content-schemas/{id}

Returns the schema with its component name and its field definitions.

Get a content schema › path Parameters

id
​string · uuid · required

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

Success

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

Delete a content schema

DELETE
https://api.genuineai.app/api/v1
/content-schemas/{id}

Removes the schema. Pages that were generated against it keep their content and their component name.

Delete a content schema › path Parameters

id
​string · uuid · required

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

Success. No content.

No data returned
DELETE/content-schemas/{id}
curl https://api.genuineai.app/api/v1/content-schemas/: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 content schema

PATCH
https://api.genuineai.app/api/v1
/content-schemas/{id}

Changes the schema's fields. Pages already generated against it keep the content they have; only later generations see the new shape.

Update a content schema › path Parameters

id
​string · uuid · required

Update a content schema › 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 content schema › Request Body optional

tpl_name
​string
tpl_component
​string
tpl_nestable
​boolean
​array
​object

Update a content schema › Responses

Success

No data returned
PATCH/content-schemas/{id}
curl https://api.genuineai.app/api/v1/content-schemas/:id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "tpl_name": "tpl_name", "tpl_component": "tpl_component", "tpl_nestable": true, "tpl_fields": [ {} ], "tpl_metadata": { "metaTitleInstructions": "metaTitleInstructions", "metaDescriptionInstructions": "metaDescriptionInstructions" } }'
Example Request Body
{ "tpl_name": "tpl_name", "tpl_component": "tpl_component", "tpl_nestable": true, "tpl_fields": [ {} ], "tpl_metadata": { "metaTitleInstructions": "metaTitleInstructions", "metaDescriptionInstructions": "metaDescriptionInstructions" } }
json
Example Responses
No example specified for this content type

Import content schemas

POST
https://api.genuineai.app/api/v1
/content-schemas/import

Loads schema definitions in bulk, for moving a set between workspaces or seeding a new one.

Import content schemas › 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.

Import content schemas › Request Body

data
​string · required
tpl_group
​string · uuid
sitemap
​string · uuid

Import content schemas › Responses

Success

No data returned
POST/content-schemas/import
curl https://api.genuineai.app/api/v1/content-schemas/import \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "data": "data", "tpl_group": "00000000-0000-0000-0000-000000000000", "sitemap": "00000000-0000-0000-0000-000000000000" }'
Example Request Body
{ "data": "data", "tpl_group": "00000000-0000-0000-0000-000000000000", "sitemap": "00000000-0000-0000-0000-000000000000" }
json
Example Responses
No example specified for this content type

Get meta data defaults

GET
https://api.genuineai.app/api/v1
/content-schemas/meta-defaults

The instructions the platform writes meta titles and meta descriptions with when a content schema sets none of its own, and the length limits every generated value is clamped to. A schema replaces either block through tpl_metadata.metaTitleInstructions / tpl_metadata.metaDescriptionInstructions.

Get meta data defaults › 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 meta data defaults › Responses

Success

​object
​object
GET/content-schemas/meta-defaults
curl https://api.genuineai.app/api/v1/content-schemas/meta-defaults \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "title": { "instructions": "instructions", "maxLength": 0 }, "description": { "instructions": "instructions", "maxLength": 0 } }
json
application/json

Website contentContent approval flows