curl --request POST \
--url https://api.aisa.one/apis/v1/apollo/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contact_id": "66e34b81740c50074e3d1bd4",
"due_at": "2025-02-15T10:00:00Z",
"status": "scheduled",
"type": "call",
"user_id": "66302798d03b9601c7934ebf"
}
'import requests
url = "https://api.aisa.one/apis/v1/apollo/tasks"
payload = {
"contact_id": "66e34b81740c50074e3d1bd4",
"due_at": "2025-02-15T10:00:00Z",
"status": "scheduled",
"type": "call",
"user_id": "66302798d03b9601c7934ebf"
}
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({
contact_id: '66e34b81740c50074e3d1bd4',
due_at: '2025-02-15T10:00:00Z',
status: 'scheduled',
type: 'call',
user_id: '66302798d03b9601c7934ebf'
})
};
fetch('https://api.aisa.one/apis/v1/apollo/tasks', 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/tasks",
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([
'contact_id' => '66e34b81740c50074e3d1bd4',
'due_at' => '2025-02-15T10:00:00Z',
'status' => 'scheduled',
'type' => 'call',
'user_id' => '66302798d03b9601c7934ebf'
]),
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/tasks"
payload := strings.NewReader("{\n \"contact_id\": \"66e34b81740c50074e3d1bd4\",\n \"due_at\": \"2025-02-15T10:00:00Z\",\n \"status\": \"scheduled\",\n \"type\": \"call\",\n \"user_id\": \"66302798d03b9601c7934ebf\"\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.aisa.one/apis/v1/apollo/tasks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contact_id\": \"66e34b81740c50074e3d1bd4\",\n \"due_at\": \"2025-02-15T10:00:00Z\",\n \"status\": \"scheduled\",\n \"type\": \"call\",\n \"user_id\": \"66302798d03b9601c7934ebf\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/apollo/tasks")
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 \"contact_id\": \"66e34b81740c50074e3d1bd4\",\n \"due_at\": \"2025-02-15T10:00:00Z\",\n \"status\": \"scheduled\",\n \"type\": \"call\",\n \"user_id\": \"66302798d03b9601c7934ebf\"\n}"
response = http.request(request)
puts response.read_body{
"task": {}
}创建任务
创建任务。
curl --request POST \
--url https://api.aisa.one/apis/v1/apollo/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contact_id": "66e34b81740c50074e3d1bd4",
"due_at": "2025-02-15T10:00:00Z",
"status": "scheduled",
"type": "call",
"user_id": "66302798d03b9601c7934ebf"
}
'import requests
url = "https://api.aisa.one/apis/v1/apollo/tasks"
payload = {
"contact_id": "66e34b81740c50074e3d1bd4",
"due_at": "2025-02-15T10:00:00Z",
"status": "scheduled",
"type": "call",
"user_id": "66302798d03b9601c7934ebf"
}
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({
contact_id: '66e34b81740c50074e3d1bd4',
due_at: '2025-02-15T10:00:00Z',
status: 'scheduled',
type: 'call',
user_id: '66302798d03b9601c7934ebf'
})
};
fetch('https://api.aisa.one/apis/v1/apollo/tasks', 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/tasks",
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([
'contact_id' => '66e34b81740c50074e3d1bd4',
'due_at' => '2025-02-15T10:00:00Z',
'status' => 'scheduled',
'type' => 'call',
'user_id' => '66302798d03b9601c7934ebf'
]),
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/tasks"
payload := strings.NewReader("{\n \"contact_id\": \"66e34b81740c50074e3d1bd4\",\n \"due_at\": \"2025-02-15T10:00:00Z\",\n \"status\": \"scheduled\",\n \"type\": \"call\",\n \"user_id\": \"66302798d03b9601c7934ebf\"\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.aisa.one/apis/v1/apollo/tasks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contact_id\": \"66e34b81740c50074e3d1bd4\",\n \"due_at\": \"2025-02-15T10:00:00Z\",\n \"status\": \"scheduled\",\n \"type\": \"call\",\n \"user_id\": \"66302798d03b9601c7934ebf\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/apollo/tasks")
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 \"contact_id\": \"66e34b81740c50074e3d1bd4\",\n \"due_at\": \"2025-02-15T10:00:00Z\",\n \"status\": \"scheduled\",\n \"type\": \"call\",\n \"user_id\": \"66302798d03b9601c7934ebf\"\n}"
response = http.request(request)
puts response.read_body{
"task": {}
}https://mcp.aisa.one/mcp —— Claude Code、
Codex、Cursor、VS Code 都可以。鉴权走 OAuth:客户端打开浏览器,你点一次
Allow,不需要粘贴任何 key。之后智能体通过几个元工具调用所有端点:
search、list_categories、get_details 和 batch_quote 免费,batch_use
按次计费。各客户端的接入步骤见通过 MCP 连接;实时工具列表和
每次调用的价格见 aisa.one/zh-cn/mcp。请求规范
- 方法与路径: POST /apis/v1/apollo/tasks
- 可用状态: enabled
- 请求 URL 模板: https://api.aisa.one/apis/v1/apollo/tasks
- Runtime 事实版本: 9ab7612cf2d53be794cbf1d65d4a257f986ac6783e53c7c3a5d868e4593061c3
{
"operationId": "post_apollo_tasks",
"method": "POST",
"path": "/apis/v1/apollo/tasks",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"examples": {
"Create a call task": {
"value": {
"contact_id": "66e34b81740c50074e3d1bd4",
"due_at": "2025-02-15T10:00:00Z",
"note": "Discuss product demo results and next steps.",
"priority": "high",
"status": "scheduled",
"title": "Follow-up call",
"type": "call",
"user_id": "66302798d03b9601c7934ebf"
}
}
},
"schema": {
"properties": {
"contact_id": {
"description": "The Apollo ID for the contact that you want to be on the receiving end of the action. <br><br>To find contact IDs, call the <a href=\"https://docs.apollo.io/reference/search-for-contacts\" target=\"_blank\">search for contacts endpoint</a> and identify the `id` value for the contact. <br><br>Example: `66e34b81740c50074e3d1bd4`",
"type": "string"
},
"due_at": {
"description": "The full date and time when the task will be due. <br><br>Your entry should adhere to the <a href=\"https://www.rfc-editor.org/rfc/rfc3339#section-5.6\" target=\"_blank\">ISO 8601 date-time format</a>. Apollo uses Greenwich Mean Time (GMT) by default. If you do not account for time zone differences, you could add a task due date that falls on a different day than you intended. <br><br>The value you enter can either adhere to GMT, or you can adjust the time manually by specifying in hours and minutes how much you want to offset GMT.<br><br>Example: `2025-02-15T08:10:30Z`; `2025-03-25T10:15:30+05:00`",
"format": "date-time",
"type": "string"
},
"note": {
"description": "Add a description for the task. This should be a human-readable message. <br><br>This parameter is not required, but it is recommended as it provides the task owner with more context on the action they need to take. <br><br>Example: `This contact expressed interest in the Sequences feature specifically. Be prepared to discuss.`",
"type": "string"
},
"priority": {
"default": "medium",
"description": "Assign a priority to the task you are creating: <ul> <li> `high` </li> <li> `medium` </li> <li> `low` </li> </ul>",
"type": "string"
},
"status": {
"description": "The status of the task being created. For future-facing tasks, you should use the `scheduled` status. <br><br>For tasks that are already completed, you can use `completed` or `skipped`. <br><br>Example: `scheduled`",
"type": "string"
},
"title": {
"description": "A title for the task. If omitted, Apollo will display an auto-generated title based on the task type and contact name. <br><br>Example: `Follow up on demo request`",
"type": "string"
},
"type": {
"description": "Set the task to be 1 of the following task types. This enables the task owner to know the type of action they need to take. <ul> <li> `call`: Call the contact. </li> <li> `outreach_manual_email`: Email the contact. </li> <li> `linkedin_step_connect`: Send a LinkedIn invitation to connect with the contact. </li> <li> `linkedin_step_message`: Send a direct message to the contact's LinkedIn profile. </li> <li> `linkedin_step_view_profile`: View the contact's LinkedIn profile. </li> <li> `linkedin_step_interact_post`: Interact with the contact's recent LinkedIn posts. </li> <li> `action_item`: Take generic action for the contact. If you use this task type, Apollo recommends using the `note` parameter too. </li> </ul>",
"type": "string"
},
"user_id": {
"description": "The ID for the task owner within your team's Apollo account. This is the user that will take action on the contacts. <br><br>Use the <a href=\"https://docs.apollo.io/reference/get-a-list-of-users\" target=\"_blank\">get a list of users endpoint</a> to retrieve IDs for all of the users within your Apollo account. <br><br>Example: `66302798d03b9601c7934ebf`",
"type": "string"
}
},
"required": [
"user_id",
"contact_id",
"type",
"status",
"due_at"
],
"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"
}
}
}
}
费用与请求规则
公开参考价格:每次成功请求 $0.012 USD。 最终费用以账户适用价格及实际结算为准。 公开参考值不是你的账户报价或最终扣费。对于支持 X-AISA-Cost-Mode: quote 的接口,执行前请针对完整请求获取免费报价;执行后通过响应费用元数据和 Usage Logs 核对结算费用。1 USD 等于 1,000,000 个整数 micro-USD。- 默认请求参考估价(USD): 0.012
- 计费依据: fixed_success
- 结算证据来源: request_snapshot
授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
请求体
The Apollo ID for the contact that you want to be on the receiving end of the action.
To find contact IDs, call the search for contacts endpoint and identify the id value for the contact.
Example: 66e34b81740c50074e3d1bd4
The full date and time when the task will be due.
Your entry should adhere to the ISO 8601 date-time format. Apollo uses Greenwich Mean Time (GMT) by default. If you do not account for time zone differences, you could add a task due date that falls on a different day than you intended.
The value you enter can either adhere to GMT, or you can adjust the time manually by specifying in hours and minutes how much you want to offset GMT.
Example: 2025-02-15T08:10:30Z; 2025-03-25T10:15:30+05:00
The status of the task being created. For future-facing tasks, you should use the scheduled status.
For tasks that are already completed, you can use completed or skipped.
Example: scheduled
Set the task to be 1 of the following task types. This enables the task owner to know the type of action they need to take.
-
call: Call the contact. -
outreach_manual_email: Email the contact. -
linkedin_step_connect: Send a LinkedIn invitation to connect with the contact. -
linkedin_step_message: Send a direct message to the contact's LinkedIn profile. -
linkedin_step_view_profile: View the contact's LinkedIn profile. -
linkedin_step_interact_post: Interact with the contact's recent LinkedIn posts. -
action_item: Take generic action for the contact. If you use this task type, Apollo recommends using thenoteparameter too.
The ID for the task owner within your team's Apollo account. This is the user that will take action on the contacts.
Use the get a list of users endpoint to retrieve IDs for all of the users within your Apollo account.
Example: 66302798d03b9601c7934ebf
Add a description for the task. This should be a human-readable message.
This parameter is not required, but it is recommended as it provides the task owner with more context on the action they need to take.
Example: This contact expressed interest in the Sequences feature specifically. Be prepared to discuss.
Assign a priority to the task you are creating:
-
high -
medium -
low
A title for the task. If omitted, Apollo will display an auto-generated title based on the task type and contact name.
Example: Follow up on demo request
响应
成功响应
已创建的任务(返回时)。