Resource writes

Create a resource

POST/resources

Creates a metadata-only resource of the named type, optionally setting field values in the same call. Requires the write scope.

Names, not refs

type is a resource type NAME (see GET /resources/types); field keys are field names as returned by GET /resources/fields?type={ref} (the name key; field titles are accepted as a case-insensitive fallback). Type and field refs differ per server — always address by name. Unknown names return 400 with the offending name in the message (UNKNOWN_TYPE / UNKNOWN_FIELD).

Values

Field values are strings, numbers, booleans, or null (null clears the field). For list-type fields (dropdowns, checkboxes, category trees) pass the option NAMES — either comma-separated in one string or as a JSON array of strings. Options that don't exist are reported per-field in fieldErrors without failing the create.

The resource is created under the linked user with the same archive state, usergroup scoping, and permission walls as an in-app upload. The title field participates in the same denormalised title handling as internal edits.

Idempotency

Pass an Idempotency-Key header (a unique random string per logical create, e.g. a UUID) to make retries safe. The first successful response with a given key is cached for 24 hours; replays return the same body byte-for-byte with Idempotent-Replayed: true. Reusing the key with a different request body returns 422 IDEMPOTENCY_KEY_CONFLICT.

X-Api-Key<token>

Issued to you when your integration is provisioned. Determines which catalogue resources are visible and which AI tools are available.

In: header

Header Parameters

Idempotency-Key?string

Optional client-supplied retry key. 1–255 printable-ASCII characters. Use a UUID or other high-entropy random string.

Match^[\x21-\x7E]+$
Lengthlength <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/resources" \  -H "Content-Type: application/json" \  -d '{    "type": "Book",    "fields": {      "title": "Small Animal Surgery, 2nd Edition",      "isbn": "978-1-905319-98-1",      "keywords": [        "veterinary",        "surgery",        "small animal"      ]    }  }'
{  "data": {    "ref": 9001,    "type": "Book",    "fieldErrors": {      "property1": "string",      "property2": "string"    }  }}
{  "success": false,  "status": "fail",  "message": "Unknown field 'subtittle' for resource type 'Book'. See GET /resources/fields?type={typeRef} for the available fields.",  "error": {    "code": "UNKNOWN_FIELD",    "message": "Unknown field 'subtittle' for resource type 'Book'. See GET /resources/fields?type={typeRef} for the available fields."  }}

{  "success": false,  "status": "fail",  "message": "API key is required",  "error": {    "code": "NO_API_KEY",    "message": "API key is required"  }}

{  "success": false,  "status": "fail",  "message": "string",  "error": {    "message": "API key is required",    "code": "NO_API_KEY"  }}
{  "success": false,  "status": "fail",  "message": "string",  "error": {    "message": "API key is required",    "code": "NO_API_KEY"  }}