> For a complete page index, fetch https://developer.close.com/llms.txt

# Create a new Custom Activity instance

POST https://api.close.com/api/v1/activity/custom/
Content-Type: application/json

Custom Activity instances will be created by default with the 'published' status. All required fields will be validated in this status. To create an activity without setting all required fields, you can use the "draft" status.

A Custom Activity can be pinned or unpinned by setting the `pinned` field to `true` or `false` when creating or updating a Custom Activity.

Custom Fields appear in the format: `custom.{custom_field_id}`. See [Custom Fields](https://developer.close.com/api/resources/custom-fields/custom-fields-activity).

Reference: https://developer.close.com/api/resources/activities/custom-activities/create

## Authentication

- `Authorization` header (basic auth, required) — Use your API key as the username and leave the password empty.
- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Body (application/json)

This endpoint expects an object.

- `custom_activity_type_id` (string, required)
- `lead_id` (string, required)
- `activity_at` (datetime, optional, nullable)
- `contact_id` (string, optional, nullable)
- `created_by` (string, optional, nullable)
- `date_created` (datetime, optional, nullable)
- `organization_id` (string, optional, nullable)
- `pinned` (boolean, optional, nullable)
- `status` (enum, optional)
  - Allowed values: `draft`, `published`
- `user_id` (string, optional, nullable)

## Response

### 200

Successful response

- `_type` (string, required)
- `activity_at` (datetime, required, nullable)
- `contact_id` (string, required, nullable)
- `created_by` (string, required, nullable)
- `custom_activity_type_id` (string, required)
- `date_created` (datetime, required)
- `date_updated` (datetime, required)
- `id` (string, required)
- `last_published_at` (datetime, required, nullable)
- `lead_id` (string, required, nullable)
- `mentions` (list of string, required)
- `mentions_updated_at` (datetime, required, nullable)
- `organization_id` (string, required)
- `pinned` (boolean, required)
- `pinned_at` (datetime, required, nullable)
- `source` (enum, required, nullable)
  - Allowed values: `ui`, `api`, `import`, `clipper`, `email`, `suggestion`, `segment-integration`, `customerio-integration`, `calendly-integration`, `ai`, `whatsapp`, `webform`
- `status` (enum, required)
  - Allowed values: `draft`, `published`
- `updated_by` (string, required, nullable)
- `user_id` (string, required, nullable)
- `users` (list of string, required)
- `comment_summary` (object, optional, nullable)
  - `comment_count` (integer, required)
  - `thread_id` (string, required)
- `created_by_name` (string, optional, nullable)
- `updated_by_name` (string, optional, nullable)
- `user_name` (string, optional, nullable)

## Errors

### 400 Bad Request Error

Bad request

- `any`

### 401 Unauthorized Error

Unauthorized

- `any`

### 404 Not Found Error

Not found

- `any`

## Examples

**Request**

```json
{
  "custom_activity_type_id": "actitype_1h5m6uHM9BZOpwVhyRJb4Y",
  "lead_id": "lead_p9bdo1sTVDvc81drMF1IxJBSHiLFZqaABYRu7ZHuxhP",
  "pinned": true,
  "custom.cf_UpyNBvr6Rw8UBHh7zRboL3PYhbOVJl3XvwgPm3jg64S": "thedarknight@close.com",
  "custom.cf_cSh3fWT3rEJ1BFSezme2YAG6bPrZV5wUWKKrW4iN19g": "Yes"
}
```

**Response**

```json
{
  "_type": "CustomActivity",
  "activity_at": "2020-08-04T16:45:35.367000+00:00",
  "contact_id": null,
  "created_by": "user_Ova4RGFG7pztSeJiiMFdN7O2MFl71nD0uGO3bIOo4Wk",
  "custom_activity_type_id": "actitype_1h5m6uHM9BZOpwVhyRJb4Y",
  "date_created": "2020-08-04T16:45:35.367000+00:00",
  "date_updated": "2020-08-04T17:37:56.439000+00:00",
  "id": "acti_5J7mimiIKB1tQ3gVduP0c4UhXbNj5ptMLteAWRJu7Sf",
  "last_published_at": "2020-08-04T16:45:35.367000+00:00",
  "lead_id": "lead_hwnL36A2iEMSLIlmGhsdrcmOJzTUzqEHwr66wrA1K2T",
  "mentions": [],
  "mentions_updated_at": null,
  "organization_id": "orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH",
  "pinned": true,
  "pinned_at": "2020-08-04T17:37:56.439000+00:00",
  "source": "ui",
  "status": "published",
  "updated_by": "user_Ova4RGFG7pztSeJiiMFdN7O2MFl71nD0uGO3bIOo4Wk",
  "user_id": "user_Ova4RGFG7pztSeJiiMFdN7O2MFl71nD0uGO3bIOo4Wk",
  "users": [],
  "created_by_name": "Bruce Wayne",
  "updated_by_name": "Bruce Wayne",
  "user_name": "Bruce Wayne",
  "custom.cf_UpyNBvr6Rw8UBHh7zRboL3PYhbOVJl3XvwgPm3jg64S": "thedarknight@close.com",
  "custom.cf_cSh3fWT3rEJ1BFSezme2YAG6bPrZV5wUWKKrW4iN19g": "Yes"
}
```

**SDK Code**

```python activities.custom_activities_create_example
import requests

url = "https://api.close.com/api/v1/activity/custom/"

payload = {
    "custom_activity_type_id": "actitype_1h5m6uHM9BZOpwVhyRJb4Y",
    "lead_id": "lead_p9bdo1sTVDvc81drMF1IxJBSHiLFZqaABYRu7ZHuxhP",
    "pinned": True,
    "custom.cf_UpyNBvr6Rw8UBHh7zRboL3PYhbOVJl3XvwgPm3jg64S": "thedarknight@close.com",
    "custom.cf_cSh3fWT3rEJ1BFSezme2YAG6bPrZV5wUWKKrW4iN19g": "Yes"
}
headers = {
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers, auth=("<CLOSE_API_KEY>", ""))

print(response.json())
```

```javascript activities.custom_activities_create_example
const url = 'https://api.close.com/api/v1/activity/custom/';
const credentials = btoa("<CLOSE_API_KEY>:");

const options = {
  method: 'POST',
  headers: {Authorization: `Basic ${credentials}`, 'Content-Type': 'application/json'},
  body: '{"custom_activity_type_id":"actitype_1h5m6uHM9BZOpwVhyRJb4Y","lead_id":"lead_p9bdo1sTVDvc81drMF1IxJBSHiLFZqaABYRu7ZHuxhP","pinned":true,"custom.cf_UpyNBvr6Rw8UBHh7zRboL3PYhbOVJl3XvwgPm3jg64S":"thedarknight@close.com","custom.cf_cSh3fWT3rEJ1BFSezme2YAG6bPrZV5wUWKKrW4iN19g":"Yes"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go activities.custom_activities_create_example
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.close.com/api/v1/activity/custom/"

	payload := strings.NewReader("{\n  \"custom_activity_type_id\": \"actitype_1h5m6uHM9BZOpwVhyRJb4Y\",\n  \"lead_id\": \"lead_p9bdo1sTVDvc81drMF1IxJBSHiLFZqaABYRu7ZHuxhP\",\n  \"pinned\": true,\n  \"custom.cf_UpyNBvr6Rw8UBHh7zRboL3PYhbOVJl3XvwgPm3jg64S\": \"thedarknight@close.com\",\n  \"custom.cf_cSh3fWT3rEJ1BFSezme2YAG6bPrZV5wUWKKrW4iN19g\": \"Yes\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.SetBasicAuth("<CLOSE_API_KEY>", "")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby activities.custom_activities_create_example
require 'uri'
require 'net/http'

url = URI("https://api.close.com/api/v1/activity/custom/")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request.basic_auth("<CLOSE_API_KEY>", "")
request["Content-Type"] = 'application/json'
request.body = "{\n  \"custom_activity_type_id\": \"actitype_1h5m6uHM9BZOpwVhyRJb4Y\",\n  \"lead_id\": \"lead_p9bdo1sTVDvc81drMF1IxJBSHiLFZqaABYRu7ZHuxhP\",\n  \"pinned\": true,\n  \"custom.cf_UpyNBvr6Rw8UBHh7zRboL3PYhbOVJl3XvwgPm3jg64S\": \"thedarknight@close.com\",\n  \"custom.cf_cSh3fWT3rEJ1BFSezme2YAG6bPrZV5wUWKKrW4iN19g\": \"Yes\"\n}"

response = http.request(request)
puts response.read_body
```

```java activities.custom_activities_create_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.close.com/api/v1/activity/custom/")
  .basicAuth("<CLOSE_API_KEY>", "")
  .header("Content-Type", "application/json")
  .body("{\n  \"custom_activity_type_id\": \"actitype_1h5m6uHM9BZOpwVhyRJb4Y\",\n  \"lead_id\": \"lead_p9bdo1sTVDvc81drMF1IxJBSHiLFZqaABYRu7ZHuxhP\",\n  \"pinned\": true,\n  \"custom.cf_UpyNBvr6Rw8UBHh7zRboL3PYhbOVJl3XvwgPm3jg64S\": \"thedarknight@close.com\",\n  \"custom.cf_cSh3fWT3rEJ1BFSezme2YAG6bPrZV5wUWKKrW4iN19g\": \"Yes\"\n}")
  .asString();
```

```php activities.custom_activities_create_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.close.com/api/v1/activity/custom/', [
  'body' => '{
  "custom_activity_type_id": "actitype_1h5m6uHM9BZOpwVhyRJb4Y",
  "lead_id": "lead_p9bdo1sTVDvc81drMF1IxJBSHiLFZqaABYRu7ZHuxhP",
  "pinned": true,
  "custom.cf_UpyNBvr6Rw8UBHh7zRboL3PYhbOVJl3XvwgPm3jg64S": "thedarknight@close.com",
  "custom.cf_cSh3fWT3rEJ1BFSezme2YAG6bPrZV5wUWKKrW4iN19g": "Yes"
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
    'auth' => ['<CLOSE_API_KEY>', ''],
]);

echo $response->getBody();
```

```csharp activities.custom_activities_create_example
using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://api.close.com/api/v1/activity/custom/");
client.Authenticator = new HttpBasicAuthenticator("<CLOSE_API_KEY>", "");
var request = new RestRequest(Method.POST);

request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"custom_activity_type_id\": \"actitype_1h5m6uHM9BZOpwVhyRJb4Y\",\n  \"lead_id\": \"lead_p9bdo1sTVDvc81drMF1IxJBSHiLFZqaABYRu7ZHuxhP\",\n  \"pinned\": true,\n  \"custom.cf_UpyNBvr6Rw8UBHh7zRboL3PYhbOVJl3XvwgPm3jg64S\": \"thedarknight@close.com\",\n  \"custom.cf_cSh3fWT3rEJ1BFSezme2YAG6bPrZV5wUWKKrW4iN19g\": \"Yes\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```