WhatsApp Meta agent
Add Meta agent skill
Add an instruction: tone, persona, a policy or a workflow. Meta reviews it before the agent applies it.
POST
/
orgs
/
{org_id}
/
connections
/
{connection_id}
/
whatsapp
/
phone-numbers
/
{phone_number_id}
/
meta-agent
/
skills
Add Meta agent skill
curl --request POST \
--url https://api.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "returns-policy",
"description": "<string>",
"skill": "<string>"
}
'import requests
url = "https://api.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills"
payload = {
"title": "returns-policy",
"description": "<string>",
"skill": "<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({title: 'returns-policy', description: '<string>', skill: '<string>'})
};
fetch('https://api.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills', 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.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills",
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([
'title' => 'returns-policy',
'description' => '<string>',
'skill' => '<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.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills"
payload := strings.NewReader("{\n \"title\": \"returns-policy\",\n \"description\": \"<string>\",\n \"skill\": \"<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.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"returns-policy\",\n \"description\": \"<string>\",\n \"skill\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills")
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 \"title\": \"returns-policy\",\n \"description\": \"<string>\",\n \"skill\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"skill": "<string>",
"status": "pending_review",
"title": "<string>",
"description": "<string>",
"channel": "<string>",
"metadata": {},
"created_at": "<string>"
}Authorizations
Bearer token authentication using your API key
Path Parameters
The ID of the org
The ID of the connection
The ID of the WhatsApp phone number the Meta agent runs on
Query Parameters
The agent the skills belong to. Defaults to the most recent.
Maximum string length:
128Body
application/jsonmultipart/form-data
Lowercase letters, digits and hyphens.
Maximum string length:
64Pattern:
^[a-z0-9]+(-[a-z0-9]+)*$Example:
"returns-policy"
When the agent applies this skill.
Required string length:
1 - 1024What the agent does: tone, persona, policies or a workflow.
Required string length:
1 - 20000Response
200 - application/json
Meta reviews every skill. A blocked skill is kept but never applied, usually because it asks for sensitive personal data.
Available options:
pending_review, active, blocked Show child attributes
Show child attributes
Was this page helpful?
⌘I
Add Meta agent skill
curl --request POST \
--url https://api.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "returns-policy",
"description": "<string>",
"skill": "<string>"
}
'import requests
url = "https://api.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills"
payload = {
"title": "returns-policy",
"description": "<string>",
"skill": "<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({title: 'returns-policy', description: '<string>', skill: '<string>'})
};
fetch('https://api.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills', 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.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills",
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([
'title' => 'returns-policy',
'description' => '<string>',
'skill' => '<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.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills"
payload := strings.NewReader("{\n \"title\": \"returns-policy\",\n \"description\": \"<string>\",\n \"skill\": \"<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.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"returns-policy\",\n \"description\": \"<string>\",\n \"skill\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useinvent.com/orgs/{org_id}/connections/{connection_id}/whatsapp/phone-numbers/{phone_number_id}/meta-agent/skills")
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 \"title\": \"returns-policy\",\n \"description\": \"<string>\",\n \"skill\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"skill": "<string>",
"status": "pending_review",
"title": "<string>",
"description": "<string>",
"channel": "<string>",
"metadata": {},
"created_at": "<string>"
}