Documentation
SDKs
Use Textree from curl, JavaScript, Python, and Elixir.
JavaScript
const response = await fetch("https://api.texttree.ai/api/v1/messages", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TEXTREE_ACCESS_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
phone_number: "+15551234567",
body: "Hello from Textree",
}),
});
const result = await response.json();
Python
import os
import requests
response = requests.post(
"https://api.texttree.ai/api/v1/messages",
headers={"Authorization": f"Bearer {os.environ['TEXTREE_ACCESS_TOKEN']}"},
json={"phone_number": "+15551234567", "body": "Hello from Textree"},
timeout=10,
)
result = response.json()
Elixir
Mix.install([:req])
result =
Req.post!(
"https://api.texttree.ai/api/v1/messages",
auth: {:bearer, System.fetch_env!("TEXTREE_ACCESS_TOKEN")},
json: %{
phone_number: "+15551234567",
body: "Hello from Textree"
}
).body
curl
curl https://api.texttree.ai/api/v1/messages \
-H "Authorization: Bearer $TEXTREE_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+15551234567",
"body": "Hello from Textree"
}'
Notes
- Use Textree access tokens with the scopes required by the endpoint.
- Use Live mode only after billing, compliance, and sender setup are complete.
- Use idempotency keys for workflow retries so duplicate jobs do not create duplicate sends.