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.