curl --request POST \
--url https://api.getoneprofile.ai/ai-context/runs/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"domain": "<string>"
}
'import requests
url = "https://api.getoneprofile.ai/ai-context/runs/"
payload = { "domain": "<string>" }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({domain: '<string>'})
};
fetch('https://api.getoneprofile.ai/ai-context/runs/', 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.getoneprofile.ai/ai-context/runs/",
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([
'domain' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.getoneprofile.ai/ai-context/runs/"
payload := strings.NewReader("{\n \"domain\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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://api.getoneprofile.ai/ai-context/runs/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"domain\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/ai-context/runs/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"domain\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"created_at": "2023-11-07T05:31:56Z",
"domain": "<string>",
"error": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"updated_at": "2023-11-07T05:31:56Z",
"steps": [
{
"action": "<string>",
"detail": "",
"duration_ms": 123,
"observation": "",
"outcome": "completed",
"thought": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Write the AI context from a company domain
Research a company domain in the background and write the AI business context from the result. Answers 202 with the run to poll; a run takes up to about 3 minutes. Only one run can go at a time per organization.
Send a domain to overwrite every field with what it says. Send none and the run reads the company domain in the signed-in user’s email address and fills only the fields still empty when it lands, so anything typed meanwhile survives: that is a new workspace’s first-run start, and it is refused (422, domain_required) when the address is consumer webmail, when any context field already has text in it, when a run has been made before, or when the signed-in user is not the person who created the organization. GET /ai-context/ says whether it would start (first_run_available), so a screen asks only when it would.
curl --request POST \
--url https://api.getoneprofile.ai/ai-context/runs/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"domain": "<string>"
}
'import requests
url = "https://api.getoneprofile.ai/ai-context/runs/"
payload = { "domain": "<string>" }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({domain: '<string>'})
};
fetch('https://api.getoneprofile.ai/ai-context/runs/', 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.getoneprofile.ai/ai-context/runs/",
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([
'domain' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.getoneprofile.ai/ai-context/runs/"
payload := strings.NewReader("{\n \"domain\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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://api.getoneprofile.ai/ai-context/runs/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"domain\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/ai-context/runs/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"domain\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"created_at": "2023-11-07T05:31:56Z",
"domain": "<string>",
"error": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"updated_at": "2023-11-07T05:31:56Z",
"steps": [
{
"action": "<string>",
"detail": "",
"duration_ms": 123,
"observation": "",
"outcome": "completed",
"thought": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Body
Request body for starting a run that writes the business context from a company domain.
A company domain like 'acme.com' (a full address or URL is read down to its domain); every field is written from it. Left out, the run reads the company domain in the signed-in user's email address and fills only the fields still empty when it lands.
1 - 255Response
Successful Response
A generation job's current state. Poll this until status is terminal.
The domain this job is researching.
Why generation failed: infra trouble, or too little public content.
Where a context-generation job has got to.
Jobs are born RUNNING: creation validates, inserts and queues the
workflow in one call, so there is no separate committed-but-not-started
phase. PENDING exists for schema parity with the other job enums and is
never observed. The two terminal states are absorbing: a job never leaves
them.
pending, running, succeeded, failed What the research did, one step per piece of work once it is done: the documents and pages it read, the sections it wrote. Grows while the job runs; kept once it finishes.
40Show child attributes
Show child attributes
Was this page helpful?