Skip to main content
POST
/
publisher
/
{publisher_id}
/
entities
/
content-type
/
custom-component
Create Custom Component
curl --request POST \
  --url https://cms.thepublive.com/publisher/{publisher_id}/entities/content-type/custom-component/ \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "meta_data": {},
  "field_types": [
    {}
  ],
  "settings": {}
}
'
{
  "status": "success",
  "message": "Created Successfully",
  "data": {
    "id": "abc123",
    "name": "Main Section",
    "meta_data": {
      "description": "A reusable hero section component with title"
    },
    "field_types": [
      {
        "name": "title",
        "type": "short_text",
        "meta_data": {
          "label": { "value": "Title" },
          "tooltip": { "value": "The main heading for the hero section" },
          "type": { "value": "input" }
        },
        "validations": {
          "required": { "value": true },
          "max_length": { "value": 100 }
        },
        "group_id": ""
      }
    ],
    "settings": {}
  }
}
Creates a new custom component schema with a defined set of field types.
publisher_id
string
required
Immutable Your Publisher ID
name
string
required
Display name for the component (e.g. "Main Section")
meta_data
object
Additional metadata for the component.
KeyTypeDescription
descriptionstringHuman-readable description of the component
field_types
array
Array of field definitions. Each object supports:
KeyTypeRequiredDescription
namestringYesField identifier
typestringYesField type: short_text, long_text, integer, boolean, media, etc.
meta_dataobjectNoUI metadata — label, tooltip, type, placeholder, default (each wrapped as {"value": ...})
validationsobjectNoValidation rules — required, max_length (each wrapped as {"value": ...})
group_idstringNoField group assignment
settings
object
Component-level settings.

Example Request

curl -X POST \
  'https://cms.thepublive.com/publisher/123/entities/content-type/custom-component/' \
  -H 'Authorization: Basic <BASE64_AUTH_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Main Section",
    "meta_data": {
      "description": "A reusable hero section component with title"
    },
    "field_types": [
      {
        "name": "title",
        "type": "short_text",
        "meta_data": {
          "label": { "value": "Title" },
          "tooltip": { "value": "The main heading for the hero section" },
          "type": { "value": "input" }
        },
        "validations": {
          "required": { "value": true },
          "max_length": { "value": 100 }
        },
        "group_id": ""
      }
    ],
    "settings": {}
  }'
{
  "status": "success",
  "message": "Created Successfully",
  "data": {
    "id": "abc123",
    "name": "Main Section",
    "meta_data": {
      "description": "A reusable hero section component with title"
    },
    "field_types": [
      {
        "name": "title",
        "type": "short_text",
        "meta_data": {
          "label": { "value": "Title" },
          "tooltip": { "value": "The main heading for the hero section" },
          "type": { "value": "input" }
        },
        "validations": {
          "required": { "value": true },
          "max_length": { "value": 100 }
        },
        "group_id": ""
      }
    ],
    "settings": {}
  }
}
Last modified on April 23, 2026