# Update Custom Field Definition

## API Overview

Custom Fields allow you to add extra information about your contacts to your contact database. With custom fields, you can create custom segments from your individual contacts or from your contact database that will dynamically update your content with the values for the individual contact receiving the email. Your custom fields are completely customizable to the use cases and user information that you need.

You can also manage your Custom Fields using the [Custom Fields UI in the Marketing Campaigns App](https://mc.sendgrid.com/custom-fields). For more about creating Custom Fields, including a list of Reserved Fields, see our [Custom Fields documentation](/docs/sendgrid/ui/managing-contacts/custom-fields/).

## Operation overview

```json
{"path":"https://api.sendgrid.com/v3/marketing/field_definitions/{custom_field_id}","method":"patch","servers":[{"url":"https://api.sendgrid.com","description":"The Twilio SendGrid v3 API"}]}
```

**This endpoint allows you to update a defined Custom Field.**

Only your Custom fields can be modified; Reserved Fields cannot be updated.

## Operation details

### Authentication

API Key

### Headers

```json
[{"in":"header","name":"Authorization","required":true,"default":"Bearer <<YOUR_API_KEY_HERE>>","schema":{"type":"string"}}]
```

### Path parameters

```json
[{"name":"custom_field_id","in":"path","required":true,"schema":{"type":"string"}}]
```

### Request body

```json
{"schema":{"type":"object","required":["name"],"example":{"name":"new_custom_field_name"},"properties":{"name":{"type":"string","minLength":1,"maxLength":100}}},"encodingType":"application/json"}
```

### Responses

```json
[{"responseCode":"200","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","required":["field_type","id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":100},"field_type":{"type":"string","enum":["Text","Number","Date"],"refName":"FieldType2","modelName":"FieldType2"},"_metadata":{"title":"_metadata","type":"object","refName":"Metadata","modelName":"Metadata","properties":{"prev":{"type":"string","format":"uri"},"self":{"type":"string","format":"uri"},"next":{"type":"string","format":"uri"},"count":{"type":"integer","minimum":0}}}}},"examples":{"response":{"value":{"id":"a1_T","name":"custom_field_name","field_type":"Text","_metadata":{"self":"https://api.sendgrid.com/v3/marketing/field_definitions/a1_B"}}}}}}}},{"responseCode":"400","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","uniqueItems":true,"items":{"title":"error","type":"object","required":["message"],"refName":"CustomFieldsError","modelName":"CustomFieldsError","properties":{"message":{"type":"string"},"field":{"type":"string"},"error_id":{"type":"string"},"parameter":{"type":"string"}}}}}}}}}},{"responseCode":"404","schema":{"description":"","content":{"application/json":{"schema":{"type":"object","required":["errors"],"properties":{"errors":{"type":"array","uniqueItems":true,"items":{"title":"error","type":"object","required":["message"],"refName":"CustomFieldsError","modelName":"CustomFieldsError","properties":{"message":{"type":"string"},"field":{"type":"string"},"error_id":{"type":"string"},"parameter":{"type":"string"}}}}}}}}}}]
```

Update Custom Field Definition

```js
const client = require("@sendgrid/client");
client.setApiKey(process.env.SENDGRID_API_KEY);

const custom_field_id = "custom_field_id";
const data = {
  name: "new_custom_field_name",
};

const request = {
  url: `/v3/marketing/field_definitions/${custom_field_id}`,
  method: "PATCH",
  body: data,
};

client
  .request(request)
  .then(([response, body]) => {
    console.log(response.statusCode);
    console.log(response.body);
  })
  .catch((error) => {
    console.error(error);
  });
```

```python
import os
from sendgrid import SendGridAPIClient


sg = SendGridAPIClient(os.environ.get("SENDGRID_API_KEY"))

custom_field_id = "custom_field_id"
data = {"name": "new_custom_field_name"}

response = sg.client.marketing.field_definitions._(custom_field_id).patch(
    request_body=data
)

print(response.status_code)
print(response.body)
print(response.headers)
```

```csharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SendGrid;

public class Program {
    public static async Task Main() {
        string apiKey = Environment.GetEnvironmentVariable("SENDGRID_API_KEY");
        var client = new SendGridClient(apiKey);

        var customFieldId = "custom_field_id";
        var data =
            @"{
            ""name"": ""new_custom_field_name""
        }";

        var response = await client.RequestAsync(
            method: SendGridClient.Method.PATCH,
            urlPath: $"marketing/field_definitions/{customFieldId}",
            requestBody: data);

        Console.WriteLine(response.StatusCode);
        Console.WriteLine(response.Body.ReadAsStringAsync().Result);
        Console.WriteLine(response.Headers.ToString());
    }
}
```

```java
import com.sendgrid.*;
import java.io.IOException;
import org.json.JSONObject;
import java.util.HashMap;

public class Example {
    public static void main(String[] args) throws IOException {
        try {
            SendGrid sg = new SendGrid(System.getenv("SENDGRID_API_KEY"));
            Request request = new Request();
            request.setMethod(Method.PATCH);
            request.setEndpoint("/marketing/field_definitions/custom_field_id");
            request.setBody(new JSONObject(new HashMap<String, Object>() {
                {
                    put("name", "new_custom_field_name");
                }
            }).toString());
            Response response = sg.api(request);
            System.out.println(response.getStatusCode());
            System.out.println(response.getBody());
            System.out.println(response.getHeaders());
        } catch (IOException ex) {
            throw ex;
        }
    }
}
```

```go
package main

import (
	"fmt"
	"github.com/sendgrid/sendgrid-go"
	"os"
)

func main() {
	apiKey := os.Getenv("SENDGRID_API_KEY")
	host := "https://api.sendgrid.com"
	request := sendgrid.GetRequest(apiKey, "/v3/marketing/field_definitions/custom_field_id", host)
	request.Method = "PATCH"
	request.Body = []byte(`{
  "name": "new_custom_field_name"
}`)
	response, err := sendgrid.API(request)
	if err != nil {
		fmt.Println(err.Error())
		os.Exit(1)
	} else {
		fmt.Println(response.StatusCode)
		fmt.Println(response.Body)
		fmt.Println(response.Headers)
	}
}
```

```php
<?php
// Uncomment the next line if you're using a dependency loader (such as Composer) (recommended)
// require 'vendor/autoload.php';

// Uncomment next line if you're not using a dependency loader (such as Composer)
// require_once '<PATH TO>/sendgrid-php.php';

$apiKey = getenv("SENDGRID_API_KEY");
$sg = new \SendGrid($apiKey);
$request_body = json_decode('{
    "name": "new_custom_field_name"
}');
$custom_field_id = "custom_field_id";

try {
    $response = $sg->client
        ->marketing()
        ->field_definitions()
        ->_($custom_field_id)
        ->patch($request_body);
    print $response->statusCode() . "\n";
    print_r($response->headers());
    print $response->body() . "\n";
} catch (Exception $ex) {
    echo "Caught exception: " . $ex->getMessage();
}
```

```ruby
require 'sendgrid-ruby'
include SendGrid

sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY'])
custom_field_id = "custom_field_id"
data = JSON.parse('{
  "name": "new_custom_field_name"
}')

response = sg.client.marketing.field_definitions._(custom_field_id).patch(request_body: data)
puts response.status_code
puts response.headers
puts response.body
```

```bash
curl -X PATCH "https://api.sendgrid.com/v3/marketing/field_definitions/custom_field_id" \
--header "Authorization: Bearer $SENDGRID_API_KEY" \
--header "Content-Type: application/json" \
--data '{"name": "new_custom_field_name"}'
```
