Run Tool
curl --request POST \
--url https://actionkit.useparagon.com/projects/{project_id}/tools \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tool": "SLACK_SEND_MESSAGE",
"parameters": {}
}
'import requests
url = "https://actionkit.useparagon.com/projects/{project_id}/tools"
payload = {
"tool": "SLACK_SEND_MESSAGE",
"parameters": {}
}
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({tool: 'SLACK_SEND_MESSAGE', parameters: {}})
};
fetch('https://actionkit.useparagon.com/projects/{project_id}/tools', 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://actionkit.useparagon.com/projects/{project_id}/tools",
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([
'tool' => 'SLACK_SEND_MESSAGE',
'parameters' => [
]
]),
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://actionkit.useparagon.com/projects/{project_id}/tools"
payload := strings.NewReader("{\n \"tool\": \"SLACK_SEND_MESSAGE\",\n \"parameters\": {}\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://actionkit.useparagon.com/projects/{project_id}/tools")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tool\": \"SLACK_SEND_MESSAGE\",\n \"parameters\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://actionkit.useparagon.com/projects/{project_id}/tools")
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 \"tool\": \"SLACK_SEND_MESSAGE\",\n \"parameters\": {}\n}"
response = http.request(request)
puts response.read_body{
"attributes": {
"type": "Account",
"url": "/services/data/v68.0/sobjects/Account/0015e008qZqg47LAAA"
},
"Id": "0015e008qZqg47LAAA",
"IsDeleted": false,
"MasterRecordId": null,
"Name": "Docs Example Account",
"Type": null,
"ParentId": null,
"BillingStreet": null,
"BillingCity": null,
"BillingState": null,
"BillingPostalCode": null,
"BillingCountry": null,
"BillingLatitude": null,
"BillingLongitude": null,
"BillingGeocodeAccuracy": null,
"BillingAddress": null,
"ShippingStreet": null,
"ShippingCity": null,
"ShippingState": null,
"ShippingPostalCode": null,
"ShippingCountry": null,
"ShippingLatitude": null,
"ShippingLongitude": null,
"ShippingGeocodeAccuracy": null,
"ShippingAddress": null,
"Phone": "555-0199",
"Fax": null,
"Website": "https://example.com",
"PhotoUrl": "/services/images/photo/0015e008qZqg47LAAA",
"Industry": null,
"AnnualRevenue": null,
"NumberOfEmployees": null,
"Description": null,
"OwnerId": "0055e00ppLgwe7JAAA",
"CreatedDate": "2026-10-16T06:15:14.000+0000",
"CreatedById": "0055e00ppLgwe7JAAA",
"LastModifiedDate": "2026-10-16T06:16:55.000+0000",
"LastModifiedById": "0055e00ppLgwe7JAAA",
"SystemModstamp": "2026-10-16T06:16:55.000+0000",
"LastActivityDate": null,
"LastViewedDate": "2026-10-16T06:16:55.000+0000",
"LastReferencedDate": "2026-10-16T06:16:55.000+0000",
"Jigsaw": null,
"JigsawCompanyId": null,
"AccountSource": null,
"SicDesc": null
}Tools API
Run Tool
Run a Tool on behalf of your user.
POST
/
projects
/
{project_id}
/
tools
Run Tool
curl --request POST \
--url https://actionkit.useparagon.com/projects/{project_id}/tools \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tool": "SLACK_SEND_MESSAGE",
"parameters": {}
}
'import requests
url = "https://actionkit.useparagon.com/projects/{project_id}/tools"
payload = {
"tool": "SLACK_SEND_MESSAGE",
"parameters": {}
}
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({tool: 'SLACK_SEND_MESSAGE', parameters: {}})
};
fetch('https://actionkit.useparagon.com/projects/{project_id}/tools', 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://actionkit.useparagon.com/projects/{project_id}/tools",
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([
'tool' => 'SLACK_SEND_MESSAGE',
'parameters' => [
]
]),
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://actionkit.useparagon.com/projects/{project_id}/tools"
payload := strings.NewReader("{\n \"tool\": \"SLACK_SEND_MESSAGE\",\n \"parameters\": {}\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://actionkit.useparagon.com/projects/{project_id}/tools")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tool\": \"SLACK_SEND_MESSAGE\",\n \"parameters\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://actionkit.useparagon.com/projects/{project_id}/tools")
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 \"tool\": \"SLACK_SEND_MESSAGE\",\n \"parameters\": {}\n}"
response = http.request(request)
puts response.read_body{
"attributes": {
"type": "Account",
"url": "/services/data/v68.0/sobjects/Account/0015e008qZqg47LAAA"
},
"Id": "0015e008qZqg47LAAA",
"IsDeleted": false,
"MasterRecordId": null,
"Name": "Docs Example Account",
"Type": null,
"ParentId": null,
"BillingStreet": null,
"BillingCity": null,
"BillingState": null,
"BillingPostalCode": null,
"BillingCountry": null,
"BillingLatitude": null,
"BillingLongitude": null,
"BillingGeocodeAccuracy": null,
"BillingAddress": null,
"ShippingStreet": null,
"ShippingCity": null,
"ShippingState": null,
"ShippingPostalCode": null,
"ShippingCountry": null,
"ShippingLatitude": null,
"ShippingLongitude": null,
"ShippingGeocodeAccuracy": null,
"ShippingAddress": null,
"Phone": "555-0199",
"Fax": null,
"Website": "https://example.com",
"PhotoUrl": "/services/images/photo/0015e008qZqg47LAAA",
"Industry": null,
"AnnualRevenue": null,
"NumberOfEmployees": null,
"Description": null,
"OwnerId": "0055e00ppLgwe7JAAA",
"CreatedDate": "2026-10-16T06:15:14.000+0000",
"CreatedById": "0055e00ppLgwe7JAAA",
"LastModifiedDate": "2026-10-16T06:16:55.000+0000",
"LastModifiedById": "0055e00ppLgwe7JAAA",
"SystemModstamp": "2026-10-16T06:16:55.000+0000",
"LastActivityDate": null,
"LastViewedDate": "2026-10-16T06:16:55.000+0000",
"LastReferencedDate": "2026-10-16T06:16:55.000+0000",
"Jigsaw": null,
"JigsawCompanyId": null,
"AccountSource": null,
"SicDesc": null
}This endpoint can be used to call any ActionKit Tool on behalf of your user.
You can find specific input parameters for a Tool you want to call in the Tools Reference, for example:
Each Tool in the Reference is an example call to this endpoint.
This endpoint was previously available at
POST /projects/{project_id}/actions. The /actions path is preserved for backward compatibility; both paths work identically.Authorizations
Your Paragon User Token (JWT), which you can generate using your project's signing keys.
Path Parameters
Your Paragon Project ID. You can copy your Project ID from your dashboard URL or by clicking Copy Project ID under the Environment switcher.
Body
application/json
Response
The response body is the provider API response to the last request used to run the Tool, returned as-is. Its shape depends on the integration and Tool. See each Tool's page in the Tools Reference for its input parameters and, where available, example responses.