curl --request PATCH \
--url https://api.aisa.one/apis/v1/apollo/contacts/{contact_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"account_id": "<string>",
"contact_stage_id": "<string>",
"corporate_phone": "<string>",
"direct_phone": "<string>",
"email": "<string>",
"first_name": "<string>",
"home_phone": "<string>",
"label_names": [
"<string>"
],
"last_name": "<string>",
"mobile_phone": "<string>",
"organization_name": "<string>",
"other_phone": "<string>",
"present_raw_address": "<string>",
"title": "<string>",
"typed_custom_fields": {
"60c39ed82bd02f01154c470a": "2025-08-07"
},
"website_url": "<string>"
}
'import requests
url = "https://api.aisa.one/apis/v1/apollo/contacts/{contact_id}"
payload = {
"account_id": "<string>",
"contact_stage_id": "<string>",
"corporate_phone": "<string>",
"direct_phone": "<string>",
"email": "<string>",
"first_name": "<string>",
"home_phone": "<string>",
"label_names": ["<string>"],
"last_name": "<string>",
"mobile_phone": "<string>",
"organization_name": "<string>",
"other_phone": "<string>",
"present_raw_address": "<string>",
"title": "<string>",
"typed_custom_fields": { "60c39ed82bd02f01154c470a": "2025-08-07" },
"website_url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '<string>',
contact_stage_id: '<string>',
corporate_phone: '<string>',
direct_phone: '<string>',
email: '<string>',
first_name: '<string>',
home_phone: '<string>',
label_names: ['<string>'],
last_name: '<string>',
mobile_phone: '<string>',
organization_name: '<string>',
other_phone: '<string>',
present_raw_address: '<string>',
title: '<string>',
typed_custom_fields: {'60c39ed82bd02f01154c470a': '2025-08-07'},
website_url: '<string>'
})
};
fetch('https://api.aisa.one/apis/v1/apollo/contacts/{contact_id}', 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.aisa.one/apis/v1/apollo/contacts/{contact_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'contact_stage_id' => '<string>',
'corporate_phone' => '<string>',
'direct_phone' => '<string>',
'email' => '<string>',
'first_name' => '<string>',
'home_phone' => '<string>',
'label_names' => [
'<string>'
],
'last_name' => '<string>',
'mobile_phone' => '<string>',
'organization_name' => '<string>',
'other_phone' => '<string>',
'present_raw_address' => '<string>',
'title' => '<string>',
'typed_custom_fields' => [
'60c39ed82bd02f01154c470a' => '2025-08-07'
],
'website_url' => '<string>'
]),
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.aisa.one/apis/v1/apollo/contacts/{contact_id}"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"contact_stage_id\": \"<string>\",\n \"corporate_phone\": \"<string>\",\n \"direct_phone\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"home_phone\": \"<string>\",\n \"label_names\": [\n \"<string>\"\n ],\n \"last_name\": \"<string>\",\n \"mobile_phone\": \"<string>\",\n \"organization_name\": \"<string>\",\n \"other_phone\": \"<string>\",\n \"present_raw_address\": \"<string>\",\n \"title\": \"<string>\",\n \"typed_custom_fields\": {\n \"60c39ed82bd02f01154c470a\": \"2025-08-07\"\n },\n \"website_url\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.aisa.one/apis/v1/apollo/contacts/{contact_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"contact_stage_id\": \"<string>\",\n \"corporate_phone\": \"<string>\",\n \"direct_phone\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"home_phone\": \"<string>\",\n \"label_names\": [\n \"<string>\"\n ],\n \"last_name\": \"<string>\",\n \"mobile_phone\": \"<string>\",\n \"organization_name\": \"<string>\",\n \"other_phone\": \"<string>\",\n \"present_raw_address\": \"<string>\",\n \"title\": \"<string>\",\n \"typed_custom_fields\": {\n \"60c39ed82bd02f01154c470a\": \"2025-08-07\"\n },\n \"website_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/apollo/contacts/{contact_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"contact_stage_id\": \"<string>\",\n \"corporate_phone\": \"<string>\",\n \"direct_phone\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"home_phone\": \"<string>\",\n \"label_names\": [\n \"<string>\"\n ],\n \"last_name\": \"<string>\",\n \"mobile_phone\": \"<string>\",\n \"organization_name\": \"<string>\",\n \"other_phone\": \"<string>\",\n \"present_raw_address\": \"<string>\",\n \"title\": \"<string>\",\n \"typed_custom_fields\": {\n \"60c39ed82bd02f01154c470a\": \"2025-08-07\"\n },\n \"website_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"contact": {},
"contact.account_id": "<string>",
"contact.email": "<string>",
"contact.first_name": "<string>",
"contact.id": "<string>",
"contact.last_name": "<string>",
"contact.organization_name": "<string>",
"contact.owner_id": "<string>",
"contact.present_raw_address": "<string>",
"contact.title": "<string>"
}Update or View Contact
Update one contact by its Apollo id.
curl --request PATCH \
--url https://api.aisa.one/apis/v1/apollo/contacts/{contact_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"account_id": "<string>",
"contact_stage_id": "<string>",
"corporate_phone": "<string>",
"direct_phone": "<string>",
"email": "<string>",
"first_name": "<string>",
"home_phone": "<string>",
"label_names": [
"<string>"
],
"last_name": "<string>",
"mobile_phone": "<string>",
"organization_name": "<string>",
"other_phone": "<string>",
"present_raw_address": "<string>",
"title": "<string>",
"typed_custom_fields": {
"60c39ed82bd02f01154c470a": "2025-08-07"
},
"website_url": "<string>"
}
'import requests
url = "https://api.aisa.one/apis/v1/apollo/contacts/{contact_id}"
payload = {
"account_id": "<string>",
"contact_stage_id": "<string>",
"corporate_phone": "<string>",
"direct_phone": "<string>",
"email": "<string>",
"first_name": "<string>",
"home_phone": "<string>",
"label_names": ["<string>"],
"last_name": "<string>",
"mobile_phone": "<string>",
"organization_name": "<string>",
"other_phone": "<string>",
"present_raw_address": "<string>",
"title": "<string>",
"typed_custom_fields": { "60c39ed82bd02f01154c470a": "2025-08-07" },
"website_url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '<string>',
contact_stage_id: '<string>',
corporate_phone: '<string>',
direct_phone: '<string>',
email: '<string>',
first_name: '<string>',
home_phone: '<string>',
label_names: ['<string>'],
last_name: '<string>',
mobile_phone: '<string>',
organization_name: '<string>',
other_phone: '<string>',
present_raw_address: '<string>',
title: '<string>',
typed_custom_fields: {'60c39ed82bd02f01154c470a': '2025-08-07'},
website_url: '<string>'
})
};
fetch('https://api.aisa.one/apis/v1/apollo/contacts/{contact_id}', 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.aisa.one/apis/v1/apollo/contacts/{contact_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'contact_stage_id' => '<string>',
'corporate_phone' => '<string>',
'direct_phone' => '<string>',
'email' => '<string>',
'first_name' => '<string>',
'home_phone' => '<string>',
'label_names' => [
'<string>'
],
'last_name' => '<string>',
'mobile_phone' => '<string>',
'organization_name' => '<string>',
'other_phone' => '<string>',
'present_raw_address' => '<string>',
'title' => '<string>',
'typed_custom_fields' => [
'60c39ed82bd02f01154c470a' => '2025-08-07'
],
'website_url' => '<string>'
]),
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.aisa.one/apis/v1/apollo/contacts/{contact_id}"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"contact_stage_id\": \"<string>\",\n \"corporate_phone\": \"<string>\",\n \"direct_phone\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"home_phone\": \"<string>\",\n \"label_names\": [\n \"<string>\"\n ],\n \"last_name\": \"<string>\",\n \"mobile_phone\": \"<string>\",\n \"organization_name\": \"<string>\",\n \"other_phone\": \"<string>\",\n \"present_raw_address\": \"<string>\",\n \"title\": \"<string>\",\n \"typed_custom_fields\": {\n \"60c39ed82bd02f01154c470a\": \"2025-08-07\"\n },\n \"website_url\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.aisa.one/apis/v1/apollo/contacts/{contact_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"contact_stage_id\": \"<string>\",\n \"corporate_phone\": \"<string>\",\n \"direct_phone\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"home_phone\": \"<string>\",\n \"label_names\": [\n \"<string>\"\n ],\n \"last_name\": \"<string>\",\n \"mobile_phone\": \"<string>\",\n \"organization_name\": \"<string>\",\n \"other_phone\": \"<string>\",\n \"present_raw_address\": \"<string>\",\n \"title\": \"<string>\",\n \"typed_custom_fields\": {\n \"60c39ed82bd02f01154c470a\": \"2025-08-07\"\n },\n \"website_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/apollo/contacts/{contact_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"contact_stage_id\": \"<string>\",\n \"corporate_phone\": \"<string>\",\n \"direct_phone\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"home_phone\": \"<string>\",\n \"label_names\": [\n \"<string>\"\n ],\n \"last_name\": \"<string>\",\n \"mobile_phone\": \"<string>\",\n \"organization_name\": \"<string>\",\n \"other_phone\": \"<string>\",\n \"present_raw_address\": \"<string>\",\n \"title\": \"<string>\",\n \"typed_custom_fields\": {\n \"60c39ed82bd02f01154c470a\": \"2025-08-07\"\n },\n \"website_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"contact": {},
"contact.account_id": "<string>",
"contact.email": "<string>",
"contact.first_name": "<string>",
"contact.id": "<string>",
"contact.last_name": "<string>",
"contact.organization_name": "<string>",
"contact.owner_id": "<string>",
"contact.present_raw_address": "<string>",
"contact.title": "<string>"
}get_apollo_contact_stages. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
https://mcp.aisa.one/mcp — Claude
Code, Codex, Cursor, VS Code and the rest. Authorization is OAuth: the client
opens a browser, you click Allow once, and there is no key to paste. Your
agent then reaches every endpoint through a few meta tools: search,
list_categories, get_details and batch_quote are free, batch_use is
billed per call. Setup per client is in
Connect via MCP; the live tool list and what each call
costs are on aisa.one/mcp.Request contract
- Method and path: PATCH /apis/v1/apollo/contacts/{contact_id}
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/apollo/contacts/{contact_id}
- contact_id: path; required
- Runtime facts: 9ab7612cf2d53be794cbf1d65d4a257f986ac6783e53c7c3a5d868e4593061c3
{
"operationId": "patch_apollo_contacts_contact_id",
"method": "PATCH",
"path": "/apis/v1/apollo/contacts/{contact_id}",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [
{
"description": "Contact ID",
"in": "path",
"name": "contact_id",
"required": true,
"schema": {
"type": "string"
}
}
],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"account_id": {
"description": "Update the account ID. Example: `63f53afe4ceeca00016bdd2f`",
"type": "string"
},
"contact_stage_id": {
"description": "Update the contact stage ID. Example: `6095a710bd01d100a506d4af`",
"type": "string"
},
"corporate_phone": {
"description": "Work/office phone.",
"type": "string"
},
"direct_phone": {
"description": "Primary phone.",
"type": "string"
},
"email": {
"description": "Update the contact email. Example: `example@email.com`",
"type": "string"
},
"first_name": {
"description": "Update the contact's first name. Example: `Tim`",
"type": "string"
},
"home_phone": {
"description": "Home phone.",
"type": "string"
},
"label_names": {
"description": "Replace lists this contact belongs to. (Passing new values will overwrite existing lists.)",
"items": {
"type": "string"
},
"type": "array"
},
"last_name": {
"description": "Update the contact's last name. Example: `Zheng`",
"type": "string"
},
"mobile_phone": {
"description": "Mobile phone.",
"type": "string"
},
"organization_name": {
"description": "Update the employer (company) name. Example: `apollo`",
"type": "string"
},
"other_phone": {
"description": "Alternate phone.",
"type": "string"
},
"present_raw_address": {
"description": "Update location (city/state/country). Example: `Atlanta, United States`",
"type": "string"
},
"title": {
"description": "Update the job title. Example: `senior research analyst`",
"type": "string"
},
"typed_custom_fields": {
"additionalProperties": {
"type": "string"
},
"description": "Add information to <a href=\"https://knowledge.apollo.io/hc/en-us/articles/4412498825869-Create-Custom-Contact-Fields\" target=\"_blank\">custom fields</a> in Apollo. <br><br><b>Your custom fields are unique to your team's Apollo account. This means that the examples in this documentation may not work for your testing purposes.</b> <br><br>To utilize this parameter successfully, call the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint and identify the `id` value for the custom field, as well as the appropriate data type. For example, if a custom field accepts picklist entries, you need to pass the accompanying `id` value for the picklist entry that you want to use as the input value. <br><br><b>Example</b>: When the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint returns an `id` of field: \n * `\"60c39ed82bd02f01154c470a\"` (datetime) \n \n\n then the value passed should be: \n\n `{\"60c39ed82bd02f01154c470a\": \"2025-08-07\"}`",
"example": {
"60c39ed82bd02f01154c470a": "2025-08-07"
},
"type": "object"
},
"website_url": {
"description": "Update the employer website URL. Example: `https://www.apollo.io/`",
"type": "string"
}
},
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "fixed_success",
"customer_pricing": "fixed_success",
"default_request_estimate_usd": 0.012,
"estimate_source": "profile_seed",
"evidence_source": "request_snapshot"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.- Default request reference estimate (USD): 0.012
- Cost contract: fixed_success
- Settlement evidence source: request_snapshot
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Contact ID
Body
Update the account ID. Example: 63f53afe4ceeca00016bdd2f
Update the contact stage ID. Example: 6095a710bd01d100a506d4af
Work/office phone.
Primary phone.
Update the contact email. Example: example@email.com
Update the contact's first name. Example: Tim
Home phone.
Replace lists this contact belongs to. (Passing new values will overwrite existing lists.)
Update the contact's last name. Example: Zheng
Mobile phone.
Update the employer (company) name. Example: apollo
Alternate phone.
Update location (city/state/country). Example: Atlanta, United States
Update the job title. Example: senior research analyst
Add information to custom fields in Apollo.
Your custom fields are unique to your team's Apollo account. This means that the examples in this documentation may not work for your testing purposes.
To utilize this parameter successfully, call the get a list of all custom fields endpoint and identify the id value for the custom field, as well as the appropriate data type. For example, if a custom field accepts picklist entries, you need to pass the accompanying id value for the picklist entry that you want to use as the input value.
Example: When the get a list of all custom fields endpoint returns an id of field:
"60c39ed82bd02f01154c470a"(datetime)
then the value passed should be:
{"60c39ed82bd02f01154c470a": "2025-08-07"}
Show child attributes
Show child attributes
{ "60c39ed82bd02f01154c470a": "2025-08-07" }
Update the employer website URL. Example: https://www.apollo.io/
Response
Successful response
Updated contact
Account ID
First name
Contact ID
Last name
Organization name
Owner ID
Raw address
Title