curl --request POST \
--url https://api.aisa.one/apis/v1/apollo/opportunities \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>"
}
'import requests
url = "https://api.aisa.one/apis/v1/apollo/opportunities"
payload = { "name": "<string>" }
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({name: '<string>'})
};
fetch('https://api.aisa.one/apis/v1/apollo/opportunities', 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/opportunities",
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([
'name' => '<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/opportunities"
payload := strings.NewReader("{\n \"name\": \"<string>\"\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/opportunities")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/apollo/opportunities")
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 \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"opportunity": {}
}Create Deal
Create a deal.
curl --request POST \
--url https://api.aisa.one/apis/v1/apollo/opportunities \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>"
}
'import requests
url = "https://api.aisa.one/apis/v1/apollo/opportunities"
payload = { "name": "<string>" }
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({name: '<string>'})
};
fetch('https://api.aisa.one/apis/v1/apollo/opportunities', 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/opportunities",
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([
'name' => '<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/opportunities"
payload := strings.NewReader("{\n \"name\": \"<string>\"\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/opportunities")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/apollo/opportunities")
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 \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"opportunity": {}
}get_apollo_opportunity_stages, and the account it belongs to comes from post_apollo_accounts_search. 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. Deals feed the workspace’s forecast, so a test record distorts numbers other people read.
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: POST /apis/v1/apollo/opportunities
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/apollo/opportunities
- Runtime facts: 9ab7612cf2d53be794cbf1d65d4a257f986ac6783e53c7c3a5d868e4593061c3
{
"operationId": "post_apollo_opportunities",
"method": "POST",
"path": "/apis/v1/apollo/opportunities",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"account_id": {
"description": "The ID for the account within your Apollo instance. This is the company that you are targeting as part of the deal being created. <br><br>Each company in the Apollo database is assigned a unique ID. To find IDs, call the <a href=\"https://docs.apollo.io/reference/organization-search\" target=\"_blank\">organization search endpoint</a> and identify the values for `organization_id`. <br><br>Example: `5e66b6381e05b4008c8331b8`",
"type": "string"
},
"amount": {
"description": "The monetary value of the deal being created. <br><br>Do not enter commas or currency symbols for the value. The currency is automatically populated by the settings within your Apollo account. Commas are not accepted and result in the deal amount being left blank. <br><br>Example: `55123478` (results in a deal value of `$55,123,478` if the default currency is USD)",
"type": "string"
},
"closed_date": {
"description": "The estimated close date for the deal. This can be a future or past date. <br><br>The date should be formatted as `YYYY-MM-DD`. <br><br>Example: `2025-10-30`",
"format": "date",
"type": "string"
},
"name": {
"description": "Name the deal you are creating. This should be a human-readable name. <br><br>Example: `Massive Q3 Deal`",
"type": "string"
},
"opportunity_stage_id": {
"description": "The ID for the deal stage within your team's Apollo account. <br><br>Each deal stage is assigned a unique ID. To find deal stage IDs, call the <a href=\"https://docs.apollo.io/reference/list-deal-stages\" target=\"_blank\">list deal stages endpoint</a> and identify the value for `id` for each stage. <br><br>Example: `6095a710bd01d100a506d4bd`",
"type": "string"
},
"owner_id": {
"description": "The ID for the deal owner within your team's Apollo account. <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"
},
"typed_custom_fields": {
"additionalProperties": {
"type": "string"
},
"description": "Add information to <a href=\"https://knowledge.apollo.io/hc/en-us/articles/4415062486669-Create-a-Deal\" 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"
}
},
"required": [
"name"
],
"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.
Body
Name the deal you are creating. This should be a human-readable name.
Example: Massive Q3 Deal
The ID for the account within your Apollo instance. This is the company that you are targeting as part of the deal being created.
Each company in the Apollo database is assigned a unique ID. To find IDs, call the organization search endpoint and identify the values for organization_id.
Example: 5e66b6381e05b4008c8331b8
The monetary value of the deal being created.
Do not enter commas or currency symbols for the value. The currency is automatically populated by the settings within your Apollo account. Commas are not accepted and result in the deal amount being left blank.
Example: 55123478 (results in a deal value of $55,123,478 if the default currency is USD)
The estimated close date for the deal. This can be a future or past date.
The date should be formatted as YYYY-MM-DD.
Example: 2025-10-30
The ID for the deal stage within your team's Apollo account.
Each deal stage is assigned a unique ID. To find deal stage IDs, call the list deal stages endpoint and identify the value for id for each stage.
Example: 6095a710bd01d100a506d4bd
The ID for the deal owner within your team's Apollo account.
Use the get a list of users endpoint to retrieve IDs for all of the users within your Apollo account.
Example: 66302798d03b9601c7934ebf
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" }
Response
Successful response
Created opportunity