curl --request GET \
--url https://api.getoneprofile.ai/outreach-tasks/activity/ \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getoneprofile.ai/outreach-tasks/activity/"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getoneprofile.ai/outreach-tasks/activity/', 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/outreach-tasks/activity/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/outreach-tasks/activity/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.getoneprofile.ai/outreach-tasks/activity/")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/outreach-tasks/activity/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"agent_written": true,
"ask_reason": "low_confidence",
"body": "<string>",
"channel": "linkedin",
"contact_identity": "<string>",
"contact_label": "<string>",
"decided_at": "2023-11-07T05:31:56Z",
"decided_by_display_name": "<string>",
"decision": "approved",
"detail": "<string>",
"error_code": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "<string>",
"linkedin_action_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mailbox_address": "<string>",
"mailbox_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"occurred_at": "2023-11-07T05:31:56Z",
"outcome": "sent",
"sender_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sender_profile_name": "<string>",
"sequence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sequence_name": "<string>",
"step_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"step_name": "<string>",
"step_position": 123,
"subject": "<string>",
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"acted_at": "2023-11-07T05:31:56Z",
"contact_company": "<string>",
"contact_title": "<string>",
"found_already": false,
"sent_without_note": false
}
],
"next_page_cursor": "<string>",
"previous_page_cursor": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}List what went out as a sender
A sender’s Activity: every email that went out as them (a sequence’s email or a reply from the inbox) and every LinkedIn step that ran on their account, with who let it go, plus every task a person refused. Each row says how it ended (outcome: sent, done, failed, skipped, already_pending, stopped, or not_sent for a refusal) and how it was decided (decision: approved with the approver, automatic when no person decided, rejected with who refused it, sent_by_person for a reply a person wrote in the inbox, not_recorded for a LinkedIn step from before Activity whose approval was not kept), with ask_reason saying why it was held for a person first. Our own LinkedIn checks (the inbox, sent connection requests, new connections) are not activity and are left out. Newest first by default; order by occurred_at or contact_label. Pass sender_profile_id for one sender; omit it for the whole workspace.
curl --request GET \
--url https://api.getoneprofile.ai/outreach-tasks/activity/ \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getoneprofile.ai/outreach-tasks/activity/"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getoneprofile.ai/outreach-tasks/activity/', 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/outreach-tasks/activity/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/outreach-tasks/activity/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.getoneprofile.ai/outreach-tasks/activity/")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/outreach-tasks/activity/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"agent_written": true,
"ask_reason": "low_confidence",
"body": "<string>",
"channel": "linkedin",
"contact_identity": "<string>",
"contact_label": "<string>",
"decided_at": "2023-11-07T05:31:56Z",
"decided_by_display_name": "<string>",
"decision": "approved",
"detail": "<string>",
"error_code": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "<string>",
"linkedin_action_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mailbox_address": "<string>",
"mailbox_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"occurred_at": "2023-11-07T05:31:56Z",
"outcome": "sent",
"sender_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sender_profile_name": "<string>",
"sequence_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sequence_name": "<string>",
"step_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"step_name": "<string>",
"step_position": 123,
"subject": "<string>",
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"acted_at": "2023-11-07T05:31:56Z",
"contact_company": "<string>",
"contact_title": "<string>",
"found_already": false,
"sent_without_note": false
}
],
"next_page_cursor": "<string>",
"previous_page_cursor": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Query Parameters
Only these channels (email, linkedin); omit for both.
Which channel performs the task once it is allowed to run.
linkedin, email Only what was decided this way: approved (a person or an API key approved it before it went), automatic (no person decided: the rules let it go), rejected (a person refused it, so it never went), sent_by_person (a person wrote and sent it from the inbox), not_recorded (a LinkedIn step from before Activity whose approval was not kept).
Who let one unit of outreach go, or refused it.
APPROVED: a person (or an API key) approved it before it went.
AUTOMATIC: nobody was asked; the sender's or the sequence's rules let
it go. REJECTED: a person refused it, so it never went.
SENT_BY_PERSON: a person wrote it and sent it themselves, from the inbox.
NOT_RECORDED: a LinkedIn step that ran before Activity existed whose
approval a later step of the same contact has since overwritten; saying so
is truer than guessing.
approved, automatic, rejected, sent_by_person, not_recorded Only these kinds: a LinkedIn action slug (connection_request, send_message, …), email for a sequence's email, or reply for a reply from the inbox.
1 - 32Only what happened at or after this instant, with its timezone offset.
Only what happened before this instant, with its timezone offset.
Only what ended this way: sent (an email the provider accepted), done (a LinkedIn step that did its job), failed, skipped, already_pending (a connection request somebody had already sent), stopped, not_sent (refused).
How one unit of outreach ended.
SENT is an email the provider accepted; DONE a LinkedIn step that
did its job, the word both LinkedIn surfaces use. SKIPPED is a step that
did not apply or was passed over in the extension; ALREADY_PENDING the
one skip every LinkedIn surface names apart, a connection request somebody
had already sent; STOPPED one stopped while a browser ran it.
NOT_SENT is a task a person refused, which never reached its channel.
sent, done, failed, skipped, already_pending, stopped, not_sent Words that must each appear in the contact's name, address or LinkedIn profile, or in the subject.
200Only what went out as these senders; omit for every sender.
Only what these sequences sent; omit for all of them.
The number of items to return.
1 <= x <= 100occurred_at, contact_label asc, desc Set the cursor to the next or previous page. You can get the cursor from the previous page's response.
Response
Successful Response
The list of ResponseItems.
Show child attributes
Show child attributes
The cursor to the next page. If there are no more pages, this is None.
The cursor to the previous page. If there are no previous pages, this is None.
Was this page helpful?