> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://contentful.com/developers/docs/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://contentful.com/_mcp/server. # Create an entry with a specified ID PUT https://api.contentful.com/spaces/{space_id}/environments/{environment_id}/entries/{entry_id} Content-Type: application/vnd.contentful.management.v1+json Creates a new entry with the specified ID or updates an existing one. Pass `X-Contentful-Content-Type` when creating; include `X-Contentful-Version` when updating. Reference: https://contentful.com/developers/docs/references/content-management-api/entries/create-an-entry-with-a-specified-id ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Request ### Path parameters - `space_id` (string, required) — ID of the space in form of a string - `environment_id` (string, required) — ID of the environment in form of a string - `entry_id` (string, required) — ID of the entry in form of a string ### Headers - `X-Contentful-Content-Type` (string, optional) — The content type ID for the entry to create - `X-Contentful-Version` (string, optional) — The last version of the entry you are updating ### Body (application/vnd.contentful.management.v1+json) This endpoint expects a map from string to any. - `map from string to any` ## Response ### 200 OK - Request successful - `map from string to any` ## Examples **Request** ```json { "fields": { "body": { "en-US": "Bacon is healthy!" }, "title": { "en-US": "Hello, World!" } }, "metadata": { "tags": [ { "sys": { "id": "nyCampaign", "linkType": "Tag", "type": "Link" } } ] } } ``` **Response** ```json { "fields": { "body": { "en-US": "Bacon is healthy!" }, "title": { "en-US": "Hello, World!" } }, "metadata": { "tags": [ { "sys": { "id": "nyCampaign", "linkType": "Tag", "type": "Link" } } ] }, "sys": { "contentType": { "sys": { "id": "hfM9RCJIk0wIm06WkEOQY", "linkType": "ContentType", "type": "Link" } }, "createdAt": "2025-06-16T09:39:48.000Z", "createdBy": { "sys": { "id": "7BslKh9TdKGOK41VmLDjFZ", "linkType": "User", "type": "Link" } }, "environment": { "sys": { "id": "staging", "linkType": "Environment", "type": "Link" } }, "id": "5KsDBWseXY6QegucYAoacS", "space": { "sys": { "id": "yadj1kx9rmg0", "linkType": "Space", "type": "Link" } }, "type": "Entry", "updatedAt": "2025-06-16T09:39:48.000Z", "updatedBy": { "sys": { "id": "4FLrUHftHW3v2BLi9fzfjU", "linkType": "User", "type": "Link" } }, "version": 1 } } ``` **SDK Code** ```android Android // Create the Contentful client. final CMAClient client = new CMAClient .Builder() .setAccessToken("") .setSpaceId("") .setEnvironmentId("") .build(); // Create a local entry. final CMAEntry entry = new CMAEntry() .setId("myID") .setField("field", "en-US", "name"); // Create the same entry in Contentful. client .entries() .async() .create( "", entry, new CMACallback() { @Override protected void onSuccess(CMAEntry entry) { // Successfully created a new entry. new AlertDialog.Builder(context) .setTitle("Contentful") .setMessage("Creation of an entry was successful." + "\n\nResult: " + entry) .show(); } @Override protected void onFailure(RuntimeException exception) { // An error occurred! Inform the user. new AlertDialog.Builder(context) .setTitle("Contentful Error") .setMessage("Could not create an entry." + "\n\nReason: " + exception.toString()) .show(); super.onFailure(exception); } } ); ``` ```java Java // Create the Contentful client. final CMAClient client = new CMAClient .Builder() .setAccessToken("") .setSpaceId("") .setEnvironmentId("") .build(); // Create a local entry with id. final CMAEntry entry = new CMAEntry() .setId("some_id") .setField("title", "en-US", "name"); // Create the same entry in Contentful. final CMAEntry createdEntry = client .entries() .create("product", entry); ``` ```kotlin Kotlin // Create the Contentful client. val client = CMAClient.Builder() .setAccessToken("") .setSpaceId("") .setEnvironmentId("") .build() // Create a local entry with id. val entry = CMAEntry() .setId("some_id") .setField("title", "en-US", "name") // Create the same entry in Contentful. val createdEntry = client .entries() .create("product", entry) ``` ```swift Swift We currently don't provide a CMA SDK for this platform. ``` ```js-legacy JavaScript (legacy) import { createClient } from 'contentful-management' const client = createClient({ accessToken: '' }, { type: 'legacy' }) // Create entry client.getSpace('') .then((space) => space.getEnvironment('')) .then((environment) => environment.createEntryWithId('', '', { fields: { title: { 'en-US': 'Entry title' } } })) .then((entry) => console.log(entry)) .catch(console.error) ``` ```javascript JavaScript import { createClient } from 'contentful-management' // Client init const client = contentful.createClient({ accessToken: '' }) const newEntry = client.entry.createWithId( { spaceId: '', environmentId: '', contentTypeId: '', entryId: '', }, {} ); ``` ```php PHP $client = new \Contentful\Management\Client(''); $environment = $client->getEnvironmentProxy('', ''); $entry = new \Contentful\Management\Resource\Entry(''); $entry->setField('title', 'en-US', 'Entry title'); $environment->create($entry, ''); $entry->setField('title', 'en-US', 'New entry title'); $entry->update(); ``` ```ruby Ruby require 'contentful/management' client = Contentful::Management::Client.new('') content_type = client.content_types('', '').find('') # Create an entry: entry = client.entries('', '').create( content_type, title: 'Entry title' ) # Update an entry: entry.name = 'new name' entry.save ``` ```python Python from contentful_management import Client client = Client('') # Create an Entry: entry_id = '' # Use `None` if you want the API to autogenerate the ID. entry = client.entries('', '').create(entry_id, { 'fields': { 'title': { 'en-US': 'Playsam Streamliner' } } }) # Update the Entry: entry.title = 'New Title' entry.save() ``` ```.net .NET // This client should only be created once per application. var httpClient = new HttpClient(); var client = new ContentfulManagementClient(httpClient, "", ""); var entry = client.GetEntry(""); entry.Name = "new name"; var updatedEntry = await client.CreateOrUpdateEntry(entry); ```