Create an activity
curl --request POST \
--url https://api.attio.com/v2/activities \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"api_slug": "site_visits",
"singular_noun": "Site visit",
"plural_noun": "Site visits",
"extends": "interactions"
}
}
'import requests
url = "https://api.attio.com/v2/activities"
payload = { "data": {
"api_slug": "site_visits",
"singular_noun": "Site visit",
"plural_noun": "Site visits",
"extends": "interactions"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
data: {
api_slug: 'site_visits',
singular_noun: 'Site visit',
plural_noun: 'Site visits',
extends: 'interactions'
}
})
};
fetch('https://api.attio.com/v2/activities', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.attio.com/v2/activities",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'api_slug' => 'site_visits',
'singular_noun' => 'Site visit',
'plural_noun' => 'Site visits',
'extends' => 'interactions'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.attio.com/v2/activities"
payload := strings.NewReader("{\n \"data\": {\n \"api_slug\": \"site_visits\",\n \"singular_noun\": \"Site visit\",\n \"plural_noun\": \"Site visits\",\n \"extends\": \"interactions\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.attio.com/v2/activities")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"api_slug\": \"site_visits\",\n \"singular_noun\": \"Site visit\",\n \"plural_noun\": \"Site visits\",\n \"extends\": \"interactions\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attio.com/v2/activities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"api_slug\": \"site_visits\",\n \"singular_noun\": \"Site visit\",\n \"plural_noun\": \"Site visits\",\n \"extends\": \"interactions\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": {
"workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
"activity_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795"
},
"api_slug": "phone_calls",
"singular_noun": "Phone call",
"plural_noun": "Phone calls",
"extends": [
{
"schema_id": "b1d6a29e-6f6f-4a0a-9b0e-59f0a3e3f7a1",
"schema_slug": "calls"
}
],
"is_system_activity": true,
"created_at": "2022-11-21T13:22:49.061281000Z"
}
}{
"status_code": 403,
"type": "auth_error",
"code": "billing_error",
"message": "Custom activities are not supported on your plan. Please upgrade or contact sales to gain access."
}{
"status_code": 409,
"type": "invalid_request_error",
"code": "slug_conflict",
"message": "Failed to create activity. Please ensure your api_slug and names are unique."
}Activities
Create an activity
Creates a new custom activity in your workspace. Your workspace must have the custom activities billing feature enabled. Public apps may instead create activities with the integration activities billing feature.
This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.
Required scopes: activity_configuration:read-write.
Supported token levels: workspace, user.
POST
/
v2
/
activities
Create an activity
curl --request POST \
--url https://api.attio.com/v2/activities \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"data": {
"api_slug": "site_visits",
"singular_noun": "Site visit",
"plural_noun": "Site visits",
"extends": "interactions"
}
}
'import requests
url = "https://api.attio.com/v2/activities"
payload = { "data": {
"api_slug": "site_visits",
"singular_noun": "Site visit",
"plural_noun": "Site visits",
"extends": "interactions"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
data: {
api_slug: 'site_visits',
singular_noun: 'Site visit',
plural_noun: 'Site visits',
extends: 'interactions'
}
})
};
fetch('https://api.attio.com/v2/activities', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.attio.com/v2/activities",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'api_slug' => 'site_visits',
'singular_noun' => 'Site visit',
'plural_noun' => 'Site visits',
'extends' => 'interactions'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.attio.com/v2/activities"
payload := strings.NewReader("{\n \"data\": {\n \"api_slug\": \"site_visits\",\n \"singular_noun\": \"Site visit\",\n \"plural_noun\": \"Site visits\",\n \"extends\": \"interactions\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.attio.com/v2/activities")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"api_slug\": \"site_visits\",\n \"singular_noun\": \"Site visit\",\n \"plural_noun\": \"Site visits\",\n \"extends\": \"interactions\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.attio.com/v2/activities")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"api_slug\": \"site_visits\",\n \"singular_noun\": \"Site visit\",\n \"plural_noun\": \"Site visits\",\n \"extends\": \"interactions\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": {
"workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
"activity_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795"
},
"api_slug": "phone_calls",
"singular_noun": "Phone call",
"plural_noun": "Phone calls",
"extends": [
{
"schema_id": "b1d6a29e-6f6f-4a0a-9b0e-59f0a3e3f7a1",
"schema_slug": "calls"
}
],
"is_system_activity": true,
"created_at": "2022-11-21T13:22:49.061281000Z"
}
}{
"status_code": 403,
"type": "auth_error",
"code": "billing_error",
"message": "Custom activities are not supported on your plan. Please upgrade or contact sales to gain access."
}{
"status_code": 409,
"type": "invalid_request_error",
"code": "slug_conflict",
"message": "Failed to create activity. Please ensure your api_slug and names are unique."
}Was this page helpful?