curl --request POST \
--url https://findtempo.co/api/v1/agentic-search/deal-context \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"question": "What did the buyer say about pricing?",
"deal_ids": [
"00000000-0000-0000-0000-000000000000"
],
"deal_id": "00000000-0000-0000-0000-000000000000",
"budget_mode": "medium"
}
'import requests
url = "https://findtempo.co/api/v1/agentic-search/deal-context"
payload = {
"question": "What did the buyer say about pricing?",
"deal_ids": ["00000000-0000-0000-0000-000000000000"],
"deal_id": "00000000-0000-0000-0000-000000000000",
"budget_mode": "medium"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
question: 'What did the buyer say about pricing?',
deal_ids: ['00000000-0000-0000-0000-000000000000'],
deal_id: '00000000-0000-0000-0000-000000000000',
budget_mode: 'medium'
})
};
fetch('https://findtempo.co/api/v1/agentic-search/deal-context', 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://findtempo.co/api/v1/agentic-search/deal-context",
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([
'question' => 'What did the buyer say about pricing?',
'deal_ids' => [
'00000000-0000-0000-0000-000000000000'
],
'deal_id' => '00000000-0000-0000-0000-000000000000',
'budget_mode' => 'medium'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://findtempo.co/api/v1/agentic-search/deal-context"
payload := strings.NewReader("{\n \"question\": \"What did the buyer say about pricing?\",\n \"deal_ids\": [\n \"00000000-0000-0000-0000-000000000000\"\n ],\n \"deal_id\": \"00000000-0000-0000-0000-000000000000\",\n \"budget_mode\": \"medium\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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(string(body))
}HttpResponse<String> response = Unirest.post("https://findtempo.co/api/v1/agentic-search/deal-context")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"question\": \"What did the buyer say about pricing?\",\n \"deal_ids\": [\n \"00000000-0000-0000-0000-000000000000\"\n ],\n \"deal_id\": \"00000000-0000-0000-0000-000000000000\",\n \"budget_mode\": \"medium\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://findtempo.co/api/v1/agentic-search/deal-context")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"question\": \"What did the buyer say about pricing?\",\n \"deal_ids\": [\n \"00000000-0000-0000-0000-000000000000\"\n ],\n \"deal_id\": \"00000000-0000-0000-0000-000000000000\",\n \"budget_mode\": \"medium\"\n}"
response = http.request(request)
puts response.read_body{
"answer": "<string>",
"missing_context": "<string>",
"citations": [
{
"kind": "artifact",
"observation_id": "<string>",
"deal_id": "<string>",
"deal_name": "<string>",
"account_id": "<string>",
"account_name": "<string>",
"artifact_id": "<string>",
"artifact_title": "<string>",
"artifact_type": "<string>",
"artifact_source": "<string>",
"artifact_summary": "<string>",
"artifact_occurred_at": "<string>",
"source_quote": "<string>",
"source_refs": [
{}
],
"observation_text": "<string>",
"structured_data": {}
}
],
"source_artifacts": [
{
"artifact_id": "<string>",
"title": "<string>",
"type": "<string>",
"source": "<string>",
"occurred_at": "<string>",
"summary": "<string>"
}
],
"deal_id": "<string>",
"stop_reason": "final_answer",
"elapsed_ms": 123
}Search Deal Context — NL answer over deal memory
Ask a natural-language question about one or more authorized deals. The service runs an internal retrieval agent over the resolved deal scope’s observations and source artifacts (call transcripts, emails, notes) and returns a synthesized, citation-backed answer.
Integrator notes:
- Authorized deal set. Pass
deal_idsfor a single or explicit multi-deal search. Omitdeal_idsto search all visible deals in the API key’s organization. Every explicit id must belong to the organization and be visible; otherwise404(cross-org existence is never revealed). Nouser_idis needed. - v1 compatibility. Deprecated
deal_idis accepted as an alias for onedeal_idsentry. - Budget. Omit
budget_modefor the standardmediumpath. Useinstantonly with exactly onedeal_idsentry. Public direct calls accept onlyinstant,medium, andhigh; larger eval modes require an internal queue/eval path. - Read-only. No deal, CRM, or artifact data is modified (the run skips the interactive deal-state regeneration).
- Grounded output.
answeris synthesized fromcitations[]; artifact citations carryobservation_id,artifact_id, and a verbatimsource_quotewhen available, while structured-data citations identify CRM/deal-state/SQL support. Source gaps and caveats are carried in the answer text rather than separate runtime diagnostics.
curl --request POST \
--url https://findtempo.co/api/v1/agentic-search/deal-context \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"question": "What did the buyer say about pricing?",
"deal_ids": [
"00000000-0000-0000-0000-000000000000"
],
"deal_id": "00000000-0000-0000-0000-000000000000",
"budget_mode": "medium"
}
'import requests
url = "https://findtempo.co/api/v1/agentic-search/deal-context"
payload = {
"question": "What did the buyer say about pricing?",
"deal_ids": ["00000000-0000-0000-0000-000000000000"],
"deal_id": "00000000-0000-0000-0000-000000000000",
"budget_mode": "medium"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
question: 'What did the buyer say about pricing?',
deal_ids: ['00000000-0000-0000-0000-000000000000'],
deal_id: '00000000-0000-0000-0000-000000000000',
budget_mode: 'medium'
})
};
fetch('https://findtempo.co/api/v1/agentic-search/deal-context', 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://findtempo.co/api/v1/agentic-search/deal-context",
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([
'question' => 'What did the buyer say about pricing?',
'deal_ids' => [
'00000000-0000-0000-0000-000000000000'
],
'deal_id' => '00000000-0000-0000-0000-000000000000',
'budget_mode' => 'medium'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://findtempo.co/api/v1/agentic-search/deal-context"
payload := strings.NewReader("{\n \"question\": \"What did the buyer say about pricing?\",\n \"deal_ids\": [\n \"00000000-0000-0000-0000-000000000000\"\n ],\n \"deal_id\": \"00000000-0000-0000-0000-000000000000\",\n \"budget_mode\": \"medium\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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(string(body))
}HttpResponse<String> response = Unirest.post("https://findtempo.co/api/v1/agentic-search/deal-context")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"question\": \"What did the buyer say about pricing?\",\n \"deal_ids\": [\n \"00000000-0000-0000-0000-000000000000\"\n ],\n \"deal_id\": \"00000000-0000-0000-0000-000000000000\",\n \"budget_mode\": \"medium\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://findtempo.co/api/v1/agentic-search/deal-context")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"question\": \"What did the buyer say about pricing?\",\n \"deal_ids\": [\n \"00000000-0000-0000-0000-000000000000\"\n ],\n \"deal_id\": \"00000000-0000-0000-0000-000000000000\",\n \"budget_mode\": \"medium\"\n}"
response = http.request(request)
puts response.read_body{
"answer": "<string>",
"missing_context": "<string>",
"citations": [
{
"kind": "artifact",
"observation_id": "<string>",
"deal_id": "<string>",
"deal_name": "<string>",
"account_id": "<string>",
"account_name": "<string>",
"artifact_id": "<string>",
"artifact_title": "<string>",
"artifact_type": "<string>",
"artifact_source": "<string>",
"artifact_summary": "<string>",
"artifact_occurred_at": "<string>",
"source_quote": "<string>",
"source_refs": [
{}
],
"observation_text": "<string>",
"structured_data": {}
}
],
"source_artifacts": [
{
"artifact_id": "<string>",
"title": "<string>",
"type": "<string>",
"source": "<string>",
"occurred_at": "<string>",
"summary": "<string>"
}
],
"deal_id": "<string>",
"stop_reason": "final_answer",
"elapsed_ms": 123
}Authorizations
API key passed as Bearer token (e.g. "Bearer your-api-key")
Body
The natural-language question to answer.
"What did the buyer say about pricing?"
Optional opportunity ids to scope the answer to. Omit to search all visible organization deals.
2500["00000000-0000-0000-0000-000000000000"]
Deprecated v1 alias for a single deal. Prefer deal_ids.
"00000000-0000-0000-0000-000000000000"
Search depth preset for public direct calls. instant is only valid with exactly one deal_ids entry.
instant, medium, high Response
A synthesized, citation-backed answer for the resolved deal scope.
The synthesized natural-language answer, grounded in the citations.
Non-null when the answer names concrete source gaps or caveats.
Evidence the answer is grounded in, in support order.
Show child attributes
Show child attributes
Deduped manifest of artifacts referenced by artifact citations.
Show child attributes
Show child attributes
Single resolved deal id when the request resolved to one deal; null for multi-deal or all-visible searches.
How the bounded search loop ended.
final_answer, fallback_final, timeout Server-side wall-clock for the run, in milliseconds.

