Trigger an application from an external system
curl --request POST \
--url https://your-instance.example.com/api/application-trigger \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phoneNumber": [
{
"value": "+14155550123",
"isActive": true
}
],
"firstName": "Jane",
"lastName": "Doe",
"name": "Refi 2026-05",
"status": "submitted",
"amount": 425000,
"loanType": "conventional",
"applicationDate": "2026-05-18",
"notes": "Referred by Brenda"
}
'import requests
url = "https://your-instance.example.com/api/application-trigger"
payload = {
"phoneNumber": [
{
"value": "+14155550123",
"isActive": True
}
],
"firstName": "Jane",
"lastName": "Doe",
"name": "Refi 2026-05",
"status": "submitted",
"amount": 425000,
"loanType": "conventional",
"applicationDate": "2026-05-18",
"notes": "Referred by Brenda"
}
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({
phoneNumber: [{value: '+14155550123', isActive: true}],
firstName: 'Jane',
lastName: 'Doe',
name: 'Refi 2026-05',
status: 'submitted',
amount: 425000,
loanType: 'conventional',
applicationDate: '2026-05-18',
notes: 'Referred by Brenda'
})
};
fetch('https://your-instance.example.com/api/application-trigger', 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://your-instance.example.com/api/application-trigger",
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([
'phoneNumber' => [
[
'value' => '+14155550123',
'isActive' => true
]
],
'firstName' => 'Jane',
'lastName' => 'Doe',
'name' => 'Refi 2026-05',
'status' => 'submitted',
'amount' => 425000,
'loanType' => 'conventional',
'applicationDate' => '2026-05-18',
'notes' => 'Referred by Brenda'
]),
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://your-instance.example.com/api/application-trigger"
payload := strings.NewReader("{\n \"phoneNumber\": [\n {\n \"value\": \"+14155550123\",\n \"isActive\": true\n }\n ],\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe\",\n \"name\": \"Refi 2026-05\",\n \"status\": \"submitted\",\n \"amount\": 425000,\n \"loanType\": \"conventional\",\n \"applicationDate\": \"2026-05-18\",\n \"notes\": \"Referred by Brenda\"\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://your-instance.example.com/api/application-trigger")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phoneNumber\": [\n {\n \"value\": \"+14155550123\",\n \"isActive\": true\n }\n ],\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe\",\n \"name\": \"Refi 2026-05\",\n \"status\": \"submitted\",\n \"amount\": 425000,\n \"loanType\": \"conventional\",\n \"applicationDate\": \"2026-05-18\",\n \"notes\": \"Referred by Brenda\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://your-instance.example.com/api/application-trigger")
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 \"phoneNumber\": [\n {\n \"value\": \"+14155550123\",\n \"isActive\": true\n }\n ],\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe\",\n \"name\": \"Refi 2026-05\",\n \"status\": \"submitted\",\n \"amount\": 425000,\n \"loanType\": \"conventional\",\n \"applicationDate\": \"2026-05-18\",\n \"notes\": \"Referred by Brenda\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Application received successfully",
"data": {
"application": {
"_id": "66b0a0b0c0d0e0f0a0b0c0d0",
"name": "Refi 2026-05",
"status": "submitted",
"amount": 425000
},
"contact": {
"id": "65c2d0e0f0a0b0c0d0e0f0a0",
"phoneNumber": [
{
"value": "+14155550123",
"isPrimary": true
}
],
"firstName": "Jane",
"lastName": "Doe"
}
}
}{
"error": "Invalid API key"
}{
"error": "Invalid API key"
}{
"error": "Invalid API key"
}ApplicationTrigger
Trigger an application from an external system
Webhook entry point used by external systems (mortgage CRMs, custom integrations) to push an application into Tether. Creates or updates the contact (matched by phone), creates the Application record, and emits the downstream events that fire automations. Requires the per-org API key.
POST
/
api
/
application-trigger
Trigger an application from an external system
curl --request POST \
--url https://your-instance.example.com/api/application-trigger \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phoneNumber": [
{
"value": "+14155550123",
"isActive": true
}
],
"firstName": "Jane",
"lastName": "Doe",
"name": "Refi 2026-05",
"status": "submitted",
"amount": 425000,
"loanType": "conventional",
"applicationDate": "2026-05-18",
"notes": "Referred by Brenda"
}
'import requests
url = "https://your-instance.example.com/api/application-trigger"
payload = {
"phoneNumber": [
{
"value": "+14155550123",
"isActive": True
}
],
"firstName": "Jane",
"lastName": "Doe",
"name": "Refi 2026-05",
"status": "submitted",
"amount": 425000,
"loanType": "conventional",
"applicationDate": "2026-05-18",
"notes": "Referred by Brenda"
}
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({
phoneNumber: [{value: '+14155550123', isActive: true}],
firstName: 'Jane',
lastName: 'Doe',
name: 'Refi 2026-05',
status: 'submitted',
amount: 425000,
loanType: 'conventional',
applicationDate: '2026-05-18',
notes: 'Referred by Brenda'
})
};
fetch('https://your-instance.example.com/api/application-trigger', 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://your-instance.example.com/api/application-trigger",
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([
'phoneNumber' => [
[
'value' => '+14155550123',
'isActive' => true
]
],
'firstName' => 'Jane',
'lastName' => 'Doe',
'name' => 'Refi 2026-05',
'status' => 'submitted',
'amount' => 425000,
'loanType' => 'conventional',
'applicationDate' => '2026-05-18',
'notes' => 'Referred by Brenda'
]),
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://your-instance.example.com/api/application-trigger"
payload := strings.NewReader("{\n \"phoneNumber\": [\n {\n \"value\": \"+14155550123\",\n \"isActive\": true\n }\n ],\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe\",\n \"name\": \"Refi 2026-05\",\n \"status\": \"submitted\",\n \"amount\": 425000,\n \"loanType\": \"conventional\",\n \"applicationDate\": \"2026-05-18\",\n \"notes\": \"Referred by Brenda\"\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://your-instance.example.com/api/application-trigger")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phoneNumber\": [\n {\n \"value\": \"+14155550123\",\n \"isActive\": true\n }\n ],\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe\",\n \"name\": \"Refi 2026-05\",\n \"status\": \"submitted\",\n \"amount\": 425000,\n \"loanType\": \"conventional\",\n \"applicationDate\": \"2026-05-18\",\n \"notes\": \"Referred by Brenda\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://your-instance.example.com/api/application-trigger")
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 \"phoneNumber\": [\n {\n \"value\": \"+14155550123\",\n \"isActive\": true\n }\n ],\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe\",\n \"name\": \"Refi 2026-05\",\n \"status\": \"submitted\",\n \"amount\": 425000,\n \"loanType\": \"conventional\",\n \"applicationDate\": \"2026-05-18\",\n \"notes\": \"Referred by Brenda\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Application received successfully",
"data": {
"application": {
"_id": "66b0a0b0c0d0e0f0a0b0c0d0",
"name": "Refi 2026-05",
"status": "submitted",
"amount": 425000
},
"contact": {
"id": "65c2d0e0f0a0b0c0d0e0f0a0",
"phoneNumber": [
{
"value": "+14155550123",
"isPrimary": true
}
],
"firstName": "Jane",
"lastName": "Doe"
}
}
}{
"error": "Invalid API key"
}{
"error": "Invalid API key"
}{
"error": "Invalid API key"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
⌘I