# Contentful

> Manage content in Contentful: create and publish content types, entries and media assets, and read back what is already there. Content types define the schema; entries hold the content; assets hold the media.

App · Website Builders · 20 actions. Web page: https://docs.lodol.com/docs/integrations/contentful

## Actions

### Activate content type

Publish (activate) a content type. Entries of this type cannot be created until it is activated.

**Inputs**

- Content type ID (`content_type_id`, text, required): The content type to act on, from 'List content types'.

**Outputs**

- `description` (text)
- `displayField` (text)
- `fields` (list)
- `name` (text)
- `sys` (object)

**Example output**

```json
{
  "description": "A blog post",
  "displayField": "title",
  "fields": [
    {
      "id": "title",
      "name": "Title",
      "required": true,
      "type": "Symbol"
    }
  ],
  "name": "Blog Post",
  "sys": {
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "blogPost",
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "ContentType",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Create asset

Create an asset from a URL - Contentful downloads the file itself, so no bytes are uploaded through this step. After creating it, this triggers Contentful's file processing and waits briefly for it to finish; processing is asynchronous, so a very large file may still be processing when this returns - check 'processingComplete' on the result, or run 'Get asset' again later. Leave locale empty to use the environment's default locale. Give an asset ID to choose it yourself.

**Inputs**

- Title (`title`, text, required): The asset's title, shown in the Contentful web app.
- File name (`file_name`, text, required): The file name to store, such as 'photo.jpg'.
- File MIME type (`content_type`, text, required): The file's MIME type, such as 'image/png' or 'application/pdf'.
- File URL (`upload_url`, text, required): A URL Contentful will download the file's bytes from.
- Description (`description`, text): A description of the asset.
- Locale (`locale`, text): The locale to store the file under. Leave empty for the environment's default.
- Asset ID (`asset_id`, text): A specific id for the asset. Leave empty to let Contentful generate one.

**Outputs**

- `fields` (object)
- `processingComplete` (true/false)
- `sys` (object)

**Example output**

```json
{
  "fields": {
    "file": {
      "en-US": {
        "contentType": "image/jpeg",
        "details": {
          "size": 12345
        },
        "fileName": "sample.jpg",
        "url": "//images.ctfassets.net/abc123space/5b6c/sample.jpg"
      }
    },
    "title": {
      "en-US": "Sample image"
    }
  },
  "processingComplete": true,
  "sys": {
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "5b6c7d8e9f0a1b2c3d4e5f6a",
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "Asset",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Create content type

Create a content type - the schema entries of this type will follow. Fields is a JSON array of field definitions, each needing an 'id', a 'name' and a 'type' (Symbol, Text, Integer, Number, Boolean, Date, Location, Object, Link, Array or RichText); a Link field also needs 'linkType' (Entry or Asset), and an Array field also needs an 'items' object naming the type each element holds. Give a content type ID to choose it yourself; leave it empty to let Contentful assign one. The content type must be activated before entries of it can be created - see 'Activate content type'.

**Inputs**

- Name (`name`, text, required): The content type's name, shown in the Contentful web app.
- Fields (`fields`, list, required): A JSON array of field definitions, e.g. [{"id": "title", "name": "Title", "type": "Symbol", "required": true}].
- Description (`description`, text): What this content type is for.
- Display field (`display_field`, text): The id of the field shown as an entry's title in the Contentful web app. Must be one of the ids in 'fields'.
- Content type ID (`content_type_id`, text): A specific id for the content type, letters, numbers, underscores and dots only. Leave empty to let Contentful generate one.

**Outputs**

- `description` (text)
- `displayField` (text)
- `fields` (list)
- `name` (text)
- `sys` (object)

**Example output**

```json
{
  "description": "A blog post",
  "displayField": "title",
  "fields": [
    {
      "id": "title",
      "name": "Title",
      "required": true,
      "type": "Symbol"
    }
  ],
  "name": "Blog Post",
  "sys": {
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "blogPost",
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "ContentType",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Create entry

Create an entry of a content type. The content type must already be activated. Give an entry ID to choose it yourself; leave it empty to let Contentful assign one.

**Inputs**

- Content type ID (`content_type_id`, text, required): The content type to act on, from 'List content types'.
- Fields (`fields`, object, required): The entry's fields, wrapped per locale, exactly as Contentful stores them - for example {"title": {"en-US": "Hello"}}. Field names must match the content type's model.
- Entry ID (`entry_id`, text): A specific id for the entry. Leave empty to let Contentful generate one.

**Outputs**

- `fields` (object)
- `sys` (object)

**Example output**

```json
{
  "fields": {
    "title": {
      "en-US": "Hello, Contentful"
    }
  },
  "sys": {
    "contentType": {
      "sys": {
        "id": "blogPost",
        "linkType": "ContentType",
        "type": "Link"
      }
    },
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "4a5b6c7d8e9f0a1b2c3d4e5f",
    "publishedAt": "2026-02-02T16:41:08.000Z",
    "publishedVersion": 2,
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "Entry",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Deactivate content type

Unpublish (deactivate) a content type. Every entry of this content type must already be deleted, and this must run before the content type itself can be deleted.

**Inputs**

- Content type ID (`content_type_id`, text, required): The content type to act on, from 'List content types'.

**Outputs**

- `description` (text)
- `displayField` (text)
- `fields` (list)
- `name` (text)
- `sys` (object)

**Example output**

```json
{
  "description": "A blog post",
  "displayField": "title",
  "fields": [
    {
      "id": "title",
      "name": "Title",
      "required": true,
      "type": "Symbol"
    }
  ],
  "name": "Blog Post",
  "sys": {
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "blogPost",
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "ContentType",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Delete asset

Delete an asset permanently. Must be unpublished first.

**Inputs**

- Asset ID (`asset_id`, text, required): The asset to act on, from 'List assets' or 'Get asset'.

**Outputs**

- `deleted` (true/false)
- `id` (text)
- `resource` (text)

**Example output**

```json
{
  "deleted": true,
  "id": "5b6c7d8e9f0a1b2c3d4e5f6a",
  "resource": "asset"
}
```

### Delete content type

Delete a content type permanently. It must already be deactivated - see 'Deactivate content type' - with every one of its entries deleted.

**Inputs**

- Content type ID (`content_type_id`, text, required): The content type to act on, from 'List content types'.

**Outputs**

- `deleted` (true/false)
- `id` (text)
- `resource` (text)

**Example output**

```json
{
  "deleted": true,
  "id": "blogPost",
  "resource": "content_type"
}
```

### Delete entry

Delete an entry permanently. Must be unpublished first.

**Inputs**

- Entry ID (`entry_id`, text, required): The entry to act on, from 'List entries' or 'Get entry'.

**Outputs**

- `deleted` (true/false)
- `id` (text)
- `resource` (text)

**Example output**

```json
{
  "deleted": true,
  "id": "4a5b6c7d8e9f0a1b2c3d4e5f",
  "resource": "entry"
}
```

### Get asset

Read one asset, with its file details per locale.

**Inputs**

- Asset ID (`asset_id`, text, required): The asset to act on, from 'List assets' or 'Get asset'.

**Outputs**

- `fields` (object)
- `processingComplete` (true/false)
- `sys` (object)

**Example output**

```json
{
  "fields": {
    "file": {
      "en-US": {
        "contentType": "image/jpeg",
        "details": {
          "size": 12345
        },
        "fileName": "sample.jpg",
        "url": "//images.ctfassets.net/abc123space/5b6c/sample.jpg"
      }
    },
    "title": {
      "en-US": "Sample image"
    }
  },
  "processingComplete": true,
  "sys": {
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "5b6c7d8e9f0a1b2c3d4e5f6a",
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "Asset",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Get content type

Read one content type in full: its fields, display field and description.

**Inputs**

- Content type ID (`content_type_id`, text, required): The content type to act on, from 'List content types'.

**Outputs**

- `description` (text)
- `displayField` (text)
- `fields` (list)
- `name` (text)
- `sys` (object)

**Example output**

```json
{
  "description": "A blog post",
  "displayField": "title",
  "fields": [
    {
      "id": "title",
      "name": "Title",
      "required": true,
      "type": "Symbol"
    }
  ],
  "name": "Blog Post",
  "sys": {
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "blogPost",
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "ContentType",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Get entry

Read one entry, with its fields wrapped per locale.

**Inputs**

- Entry ID (`entry_id`, text, required): The entry to act on, from 'List entries' or 'Get entry'.

**Outputs**

- `fields` (object)
- `sys` (object)

**Example output**

```json
{
  "fields": {
    "title": {
      "en-US": "Hello, Contentful"
    }
  },
  "sys": {
    "contentType": {
      "sys": {
        "id": "blogPost",
        "linkType": "ContentType",
        "type": "Link"
      }
    },
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "4a5b6c7d8e9f0a1b2c3d4e5f",
    "publishedAt": "2026-02-02T16:41:08.000Z",
    "publishedVersion": 2,
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "Entry",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### List assets

List assets (media files) in this space and environment.

**Inputs**

- Query (`query`, text): Only assets whose text matches this full-text search.
- Limit (`limit`, number): How many to return, 1-100. Defaults to 25. From 1 to 100. Default: `25`.
- Skip (`skip`, number): How many records to skip, for paging past the first page. At least 0. Default: `0`.

**Outputs**: The assets

- `has_more` (true/false): Whether another page exists past this one
- `items` (list)
- `limit` (number): The page size used
- `skip` (number): How many were skipped
- `total` (number): Total matching records

**Example output**

```json
{
  "has_more": false,
  "items": [
    {
      "fields": {
        "file": {
          "en-US": {
            "contentType": "image/jpeg",
            "details": {
              "size": 12345
            },
            "fileName": "sample.jpg",
            "url": "//images.ctfassets.net/abc123space/5b6c/sample.jpg"
          }
        },
        "title": {
          "en-US": "Sample image"
        }
      },
      "processingComplete": true,
      "sys": {
        "createdAt": "2026-01-14T09:12:44.000Z",
        "environment": {
          "sys": {
            "id": "master",
            "linkType": "Environment",
            "type": "Link"
          }
        },
        "id": "5b6c7d8e9f0a1b2c3d4e5f6a",
        "space": {
          "sys": {
            "id": "abc123space",
            "linkType": "Space",
            "type": "Link"
          }
        },
        "type": "Asset",
        "updatedAt": "2026-02-02T16:41:08.000Z",
        "version": 3
      }
    }
  ],
  "limit": 25,
  "skip": 0,
  "total": 1
}
```

### List content types

List the content types defined in this space and environment - the schemas that entries are created from. Each one reports its id, name, description, display field and field definitions.

**Inputs**

- Limit (`limit`, number): How many to return, 1-100. Defaults to 25. From 1 to 100. Default: `25`.
- Skip (`skip`, number): How many records to skip, for paging past the first page. At least 0. Default: `0`.

**Outputs**: The content types

- `has_more` (true/false): Whether another page exists past this one
- `items` (list)
- `limit` (number): The page size used
- `skip` (number): How many were skipped
- `total` (number): Total matching records

**Example output**

```json
{
  "has_more": false,
  "items": [
    {
      "description": "A blog post",
      "displayField": "title",
      "fields": [
        {
          "id": "title",
          "name": "Title",
          "required": true,
          "type": "Symbol"
        }
      ],
      "name": "Blog Post",
      "sys": {
        "createdAt": "2026-01-14T09:12:44.000Z",
        "environment": {
          "sys": {
            "id": "master",
            "linkType": "Environment",
            "type": "Link"
          }
        },
        "id": "blogPost",
        "space": {
          "sys": {
            "id": "abc123space",
            "linkType": "Space",
            "type": "Link"
          }
        },
        "type": "ContentType",
        "updatedAt": "2026-02-02T16:41:08.000Z",
        "version": 3
      }
    }
  ],
  "limit": 25,
  "skip": 0,
  "total": 1
}
```

### List entries

List entries, optionally narrowed to one content type or to text matching a full-text search.

**Inputs**

- Content type ID (`content_type`, text): Only entries of this content type. Leave empty for all types.
- Query (`query`, text): Only entries whose text matches this full-text search.
- Order (`order`, text): A field to sort by, such as 'sys.createdAt' or '-sys.createdAt' for newest first.
- Limit (`limit`, number): How many to return, 1-100. Defaults to 25. From 1 to 100. Default: `25`.
- Skip (`skip`, number): How many records to skip, for paging past the first page. At least 0. Default: `0`.

**Outputs**: The entries

- `has_more` (true/false): Whether another page exists past this one
- `items` (list)
- `limit` (number): The page size used
- `skip` (number): How many were skipped
- `total` (number): Total matching records

**Example output**

```json
{
  "has_more": false,
  "items": [
    {
      "fields": {
        "title": {
          "en-US": "Hello, Contentful"
        }
      },
      "sys": {
        "contentType": {
          "sys": {
            "id": "blogPost",
            "linkType": "ContentType",
            "type": "Link"
          }
        },
        "createdAt": "2026-01-14T09:12:44.000Z",
        "environment": {
          "sys": {
            "id": "master",
            "linkType": "Environment",
            "type": "Link"
          }
        },
        "id": "4a5b6c7d8e9f0a1b2c3d4e5f",
        "publishedAt": "2026-02-02T16:41:08.000Z",
        "publishedVersion": 2,
        "space": {
          "sys": {
            "id": "abc123space",
            "linkType": "Space",
            "type": "Link"
          }
        },
        "type": "Entry",
        "updatedAt": "2026-02-02T16:41:08.000Z",
        "version": 3
      }
    }
  ],
  "limit": 25,
  "skip": 0,
  "total": 1
}
```

### List locales

List the locales configured for this environment. Every entry and asset field is stored per locale, and exactly one locale here is marked 'default'.

**Inputs**: None.

**Outputs**: The environment's locales

- `count` (number): How many were returned
- `items` (list)

**Example output**

```json
{
  "count": 1,
  "items": [
    {
      "code": "en-US",
      "contentDeliveryApi": true,
      "contentManagementApi": true,
      "default": true,
      "fallbackCode": null,
      "name": "English (United States)",
      "optional": false
    }
  ]
}
```

### Publish asset

Publish an asset, making it live on the Content Delivery API. The file must already be processed (have a URL) - 'Create asset' does this automatically.

**Inputs**

- Asset ID (`asset_id`, text, required): The asset to act on, from 'List assets' or 'Get asset'.

**Outputs**

- `fields` (object)
- `processingComplete` (true/false)
- `sys` (object)

**Example output**

```json
{
  "fields": {
    "file": {
      "en-US": {
        "contentType": "image/jpeg",
        "details": {
          "size": 12345
        },
        "fileName": "sample.jpg",
        "url": "//images.ctfassets.net/abc123space/5b6c/sample.jpg"
      }
    },
    "title": {
      "en-US": "Sample image"
    }
  },
  "processingComplete": true,
  "sys": {
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "5b6c7d8e9f0a1b2c3d4e5f6a",
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "Asset",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Publish entry

Publish an entry, making it live on the Content Delivery API.

**Inputs**

- Entry ID (`entry_id`, text, required): The entry to act on, from 'List entries' or 'Get entry'.

**Outputs**

- `fields` (object)
- `sys` (object)

**Example output**

```json
{
  "fields": {
    "title": {
      "en-US": "Hello, Contentful"
    }
  },
  "sys": {
    "contentType": {
      "sys": {
        "id": "blogPost",
        "linkType": "ContentType",
        "type": "Link"
      }
    },
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "4a5b6c7d8e9f0a1b2c3d4e5f",
    "publishedAt": "2026-02-02T16:41:08.000Z",
    "publishedVersion": 2,
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "Entry",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Unpublish asset

Unpublish an asset. Required before it can be deleted.

**Inputs**

- Asset ID (`asset_id`, text, required): The asset to act on, from 'List assets' or 'Get asset'.

**Outputs**

- `fields` (object)
- `processingComplete` (true/false)
- `sys` (object)

**Example output**

```json
{
  "fields": {
    "file": {
      "en-US": {
        "contentType": "image/jpeg",
        "details": {
          "size": 12345
        },
        "fileName": "sample.jpg",
        "url": "//images.ctfassets.net/abc123space/5b6c/sample.jpg"
      }
    },
    "title": {
      "en-US": "Sample image"
    }
  },
  "processingComplete": true,
  "sys": {
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "5b6c7d8e9f0a1b2c3d4e5f6a",
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "Asset",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Unpublish entry

Unpublish an entry. Required before it can be deleted.

**Inputs**

- Entry ID (`entry_id`, text, required): The entry to act on, from 'List entries' or 'Get entry'.

**Outputs**

- `fields` (object)
- `sys` (object)

**Example output**

```json
{
  "fields": {
    "title": {
      "en-US": "Hello, Contentful"
    }
  },
  "sys": {
    "contentType": {
      "sys": {
        "id": "blogPost",
        "linkType": "ContentType",
        "type": "Link"
      }
    },
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "4a5b6c7d8e9f0a1b2c3d4e5f",
    "publishedAt": "2026-02-02T16:41:08.000Z",
    "publishedVersion": 2,
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "Entry",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```

### Update entry

Replace an entry's fields. This replaces the whole fields object rather than merging - include every field you want to keep, not only the ones changing.

**Inputs**

- Entry ID (`entry_id`, text, required): The entry to act on, from 'List entries' or 'Get entry'.
- Fields (`fields`, object, required): The entry's fields, wrapped per locale, exactly as Contentful stores them - for example {"title": {"en-US": "Hello"}}. Field names must match the content type's model.

**Outputs**

- `fields` (object)
- `sys` (object)

**Example output**

```json
{
  "fields": {
    "title": {
      "en-US": "Hello, Contentful"
    }
  },
  "sys": {
    "contentType": {
      "sys": {
        "id": "blogPost",
        "linkType": "ContentType",
        "type": "Link"
      }
    },
    "createdAt": "2026-01-14T09:12:44.000Z",
    "environment": {
      "sys": {
        "id": "master",
        "linkType": "Environment",
        "type": "Link"
      }
    },
    "id": "4a5b6c7d8e9f0a1b2c3d4e5f",
    "publishedAt": "2026-02-02T16:41:08.000Z",
    "publishedVersion": 2,
    "space": {
      "sys": {
        "id": "abc123space",
        "linkType": "Space",
        "type": "Link"
      }
    },
    "type": "Entry",
    "updatedAt": "2026-02-02T16:41:08.000Z",
    "version": 3
  }
}
```
