cURL
curl --request POST \
--url http://base.url.com/templates \
--header 'Content-Type: application/json' \
--header 'x-phishy-api-key: <api-key>' \
--data '
[
{
"name": "<string>",
"subject": "<string>",
"text": "<string>",
"html": "<string>",
"is_check_email_opened": false,
"is_check_clicked_link": false,
"is_check_submitted_data": false,
"is_check_file_downloaded": false,
"is_check_file_executed": false,
"addAttachment": false,
"attachment_in_body": false,
"attachmentRedirectToPhished": false,
"attachment_name": "<string>"
}
]
'import requests
url = "http://base.url.com/templates"
payload = [
{
"name": "<string>",
"subject": "<string>",
"text": "<string>",
"html": "<string>",
"is_check_email_opened": False,
"is_check_clicked_link": False,
"is_check_submitted_data": False,
"is_check_file_downloaded": False,
"is_check_file_executed": False,
"addAttachment": False,
"attachment_in_body": False,
"attachmentRedirectToPhished": False,
"attachment_name": "<string>"
}
]
headers = {
"x-phishy-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-phishy-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
name: '<string>',
subject: '<string>',
text: '<string>',
html: '<string>',
is_check_email_opened: false,
is_check_clicked_link: false,
is_check_submitted_data: false,
is_check_file_downloaded: false,
is_check_file_executed: false,
addAttachment: false,
attachment_in_body: false,
attachmentRedirectToPhished: false,
attachment_name: '<string>'
}
])
};
fetch('http://base.url.com/templates', 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 => "http://base.url.com/templates",
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([
[
'name' => '<string>',
'subject' => '<string>',
'text' => '<string>',
'html' => '<string>',
'is_check_email_opened' => false,
'is_check_clicked_link' => false,
'is_check_submitted_data' => false,
'is_check_file_downloaded' => false,
'is_check_file_executed' => false,
'addAttachment' => false,
'attachment_in_body' => false,
'attachmentRedirectToPhished' => false,
'attachment_name' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-phishy-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 := "http://base.url.com/templates"
payload := strings.NewReader("[\n {\n \"name\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"is_check_email_opened\": false,\n \"is_check_clicked_link\": false,\n \"is_check_submitted_data\": false,\n \"is_check_file_downloaded\": false,\n \"is_check_file_executed\": false,\n \"addAttachment\": false,\n \"attachment_in_body\": false,\n \"attachmentRedirectToPhished\": false,\n \"attachment_name\": \"<string>\"\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-phishy-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("http://base.url.com/templates")
.header("x-phishy-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("[\n {\n \"name\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"is_check_email_opened\": false,\n \"is_check_clicked_link\": false,\n \"is_check_submitted_data\": false,\n \"is_check_file_downloaded\": false,\n \"is_check_file_executed\": false,\n \"addAttachment\": false,\n \"attachment_in_body\": false,\n \"attachmentRedirectToPhished\": false,\n \"attachment_name\": \"<string>\"\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("http://base.url.com/templates")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["x-phishy-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"name\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"is_check_email_opened\": false,\n \"is_check_clicked_link\": false,\n \"is_check_submitted_data\": false,\n \"is_check_file_downloaded\": false,\n \"is_check_file_executed\": false,\n \"addAttachment\": false,\n \"attachment_in_body\": false,\n \"attachmentRedirectToPhished\": false,\n \"attachment_name\": \"<string>\"\n }\n]"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"content": "<string>"
}{
"error": 123,
"message": "<string>"
}{
"error": 403,
"message": "You do not have permission to access this resource."
}Templates
Create Template
Creates a new template with provided details
POST
/
templates
cURL
curl --request POST \
--url http://base.url.com/templates \
--header 'Content-Type: application/json' \
--header 'x-phishy-api-key: <api-key>' \
--data '
[
{
"name": "<string>",
"subject": "<string>",
"text": "<string>",
"html": "<string>",
"is_check_email_opened": false,
"is_check_clicked_link": false,
"is_check_submitted_data": false,
"is_check_file_downloaded": false,
"is_check_file_executed": false,
"addAttachment": false,
"attachment_in_body": false,
"attachmentRedirectToPhished": false,
"attachment_name": "<string>"
}
]
'import requests
url = "http://base.url.com/templates"
payload = [
{
"name": "<string>",
"subject": "<string>",
"text": "<string>",
"html": "<string>",
"is_check_email_opened": False,
"is_check_clicked_link": False,
"is_check_submitted_data": False,
"is_check_file_downloaded": False,
"is_check_file_executed": False,
"addAttachment": False,
"attachment_in_body": False,
"attachmentRedirectToPhished": False,
"attachment_name": "<string>"
}
]
headers = {
"x-phishy-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-phishy-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
name: '<string>',
subject: '<string>',
text: '<string>',
html: '<string>',
is_check_email_opened: false,
is_check_clicked_link: false,
is_check_submitted_data: false,
is_check_file_downloaded: false,
is_check_file_executed: false,
addAttachment: false,
attachment_in_body: false,
attachmentRedirectToPhished: false,
attachment_name: '<string>'
}
])
};
fetch('http://base.url.com/templates', 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 => "http://base.url.com/templates",
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([
[
'name' => '<string>',
'subject' => '<string>',
'text' => '<string>',
'html' => '<string>',
'is_check_email_opened' => false,
'is_check_clicked_link' => false,
'is_check_submitted_data' => false,
'is_check_file_downloaded' => false,
'is_check_file_executed' => false,
'addAttachment' => false,
'attachment_in_body' => false,
'attachmentRedirectToPhished' => false,
'attachment_name' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-phishy-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 := "http://base.url.com/templates"
payload := strings.NewReader("[\n {\n \"name\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"is_check_email_opened\": false,\n \"is_check_clicked_link\": false,\n \"is_check_submitted_data\": false,\n \"is_check_file_downloaded\": false,\n \"is_check_file_executed\": false,\n \"addAttachment\": false,\n \"attachment_in_body\": false,\n \"attachmentRedirectToPhished\": false,\n \"attachment_name\": \"<string>\"\n }\n]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-phishy-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("http://base.url.com/templates")
.header("x-phishy-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("[\n {\n \"name\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"is_check_email_opened\": false,\n \"is_check_clicked_link\": false,\n \"is_check_submitted_data\": false,\n \"is_check_file_downloaded\": false,\n \"is_check_file_executed\": false,\n \"addAttachment\": false,\n \"attachment_in_body\": false,\n \"attachmentRedirectToPhished\": false,\n \"attachment_name\": \"<string>\"\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("http://base.url.com/templates")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["x-phishy-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "[\n {\n \"name\": \"<string>\",\n \"subject\": \"<string>\",\n \"text\": \"<string>\",\n \"html\": \"<string>\",\n \"is_check_email_opened\": false,\n \"is_check_clicked_link\": false,\n \"is_check_submitted_data\": false,\n \"is_check_file_downloaded\": false,\n \"is_check_file_executed\": false,\n \"addAttachment\": false,\n \"attachment_in_body\": false,\n \"attachmentRedirectToPhished\": false,\n \"attachment_name\": \"<string>\"\n }\n]"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"content": "<string>"
}{
"error": 123,
"message": "<string>"
}{
"error": 403,
"message": "You do not have permission to access this resource."
}Authorizations
Body
application/json
Details of the new template to create
Name of the email campaign
Subject line of the email
Plain text version of the email content
HTML content of the email, styled with MJML
Flag to track if the email has been opened
Flag to track if links within the email have been clicked
Flag to track if data was submitted by the recipient
Flag to track if any attached file has been downloaded
Flag to track if any executable file attached has been run by the recipient
Flag to indicate if an attachment should be included in the email
Flag to include attachment directly in the email body
Flag to redirect the attachment to a phishing site upon opening
Name of the file to be attached, if any
⌘I
