API

Your data. Any model.

One call returns everything flat. No pagination. No joins. Every client, contract, file, and platform stat, raw JSON, ready for any AI model or automation.

Titanline
AI Model
(n8n, Cloud,
Llama)
Service
Delivery
1
Call to get everything
5
Total commands
30 min
Min refresh interval
Any
AI model compatible
1, Data Structure

Everything returned in a single call. Colours denote data type, no headers needed.

1 Basic Details
2 Files & Contracts
3 Outreach
{
  "user":         "you@domain.com",
  "client_count": 12,
  "clients": [{
    "name":               "Acme Corp",
    "email":              "hi@acme.com",
    "industry":           "SaaS",
    "join_date":          "2025-11-01",
    "notes":              "Follow up Q1. Decision maker is Sarah.",
    "delivery_freq_days": 30,
    "sent":               false,
    "contracts": [{
      "name": "contract.pdf",
      "url":  "https://files.titanlineco.com/...",
      "text": "This agreement is entered into between Acme Corp and... payment terms net 30. Deliverables defined in Schedule A."
    }],
    "files": [{
      "name": "brief.pdf",
      "url":  "https://files.titanlineco.com/...",
      "text": "Project brief: redesign onboarding. Target 40% drop-off reduction. Launch Q2."
    }]
  }],
  "platform_count": 3,
  "platforms": [{
    "name":       "LinkedIn",
    "account":    "@yourhandle",
    "total":      4200,
    "follow_ups": 180,
    "interest":   42,
    "ready":      8
  }]
}
2, n8n

HTTP Request node with Header Auth. Query field accepts JSON body for write operations.

HTTP Request · Pull all clients
Authentication
Header Auth
Credential for Header Auth
Name: Authorization    Value: Bearer YOUR_KEY
HTTP Request Method
GET
Endpoint
https://titanlineco.com/api/data?add=clients,platforms
Request Format
JSON (Recommended)
HTTP Request · Add a client
Authentication
Header Auth
Credential for Header Auth
Name: Authorization    Value: Bearer YOUR_KEY
HTTP Request Method
POST
Endpoint
https://titanlineco.com/api/clients/add
Request Format
JSON (Recommended)
Query
{ "name": "{{ $json.name }}", "email": "{{ $json.email }}" }
HTTP Request · Remove a client
HTTP Request Method
POST
Endpoint
https://titanlineco.com/api/clients/remove
Query
{ "name": "{{ $json.name }}" }
3, Local / Mistral

Two primitives. GET pulls the state. POST writes it back. Everything else the AI assembles from context.

auth + GET
KEY  = "YOUR_KEY"
BASE = "https://titanlineco.com/api"
H    = {"Authorization": f"Bearer {KEY}"}

data = requests.get(f"{BASE}/data?add=clients,platforms", headers=H).json()

with open("titanline_data.txt", "w") as f:
    f.write(json.dumps(data, indent=2))
POST write back after delivery
for client in data["clients"]:
    requests.post(f"{BASE}/data", headers={**H, "Content-Type": "application/json"}, json={
        "client_id": client["client_id"],
        "sent": True,
        "checkboxes": {"report": True, "email": True}
    })
knowledge base
def knowledge_base(path="titanline_data.txt"):
    with open(path) as f:
        return f.read()
GET /api/data?add=clients,platformstitanline_data.txt
POST /api/datawrite sent + checkboxes
knowledge_base()context string into model
4, Under the Hood

POSTs are building blocks. Simple, composable, intentionally minimal. We can't document every sequence the AI assembles what the context demands. These are three projections of what that looks like.

Example 1: Delivery Confirmation. Mark sent after automated email.
clients = requests.get(f"{BASE}/data?add=clients", headers=H).json()["clients"]
for c in [x for x in clients if not x["sent"]]:
    send_email(c)
        requests.post(f"{BASE}/data", headers={**H,"Content-Type":"application/json"}, json={"client_id":c["client_id"],"sent":True})
        verify = requests.get(f"{BASE}/data?add=clients",headers=H).json()["clients"]
    confirmed = next(x for x in verify if x["client_id"] == c["client_id"])
    assert confirmed["sent"] == True
Example 2: Notes Write-Back. AI profiles client from files and posts back.
client = requests.get(f"{BASE}/data?add=clients",headers=H).json()["clients"][0]
note = model.chat(f"Summarise this client from their files: {client['files']}")
requests.post(f"{BASE}/data",headers={**H,"Content-Type":"application/json"},json={
    "client_id": client["client_id"],
    "notes": note
})
updated = requests.get(f"{BASE}/data?add=clients",headers=H).json()["clients"]
match = next(x for x in updated if x["client_id"] == client["client_id"])
assert match["notes"] == note
Example 3: Pipeline Reset. Clear all sent flags for the next delivery cycle.
clients = requests.get(f"{BASE}/data?add=clients",headers=H).json()["clients"]
for c in clients:
    requests.post(f"{BASE}/data",headers={**H,"Content-Type":"application/json"},json={"client_id":c["client_id"],"sent":False,"checkboxes":{}})
reset = requests.get(f"{BASE}/data?add=clients",headers=H).json()["clients"]
assert all(not c["sent"] for c in reset)

The response is never the confirmation. The next GET is.

5, Terminal

One command. Full snapshot to a local file.

Download snapshot

Pulls everything to a local file. Feed it manually into any model or audit a specific period.

curl -H "Authorization: Bearer YOUR_KEY" "https://titanlineco.com/api/data?add=clients,platforms" >> clients.txt
Sync Intervals
ClientsInterval
0 – 506 hours
51 – 5003 hours
501 – 10,00060 min
10,000+30 min

Loads once on login. Writes are immediate. Background refresh only fires when the tab is visible. Snapshot diff, if nothing changed, zero re-render.

1b, Data Structure Real Output

Actual response from a live Titanline account. Files and contracts include extracted text ready for AI context.

titanlineuser@linux:~$ curl -H "Authorization: Bearer [put your api-key here]" "https://titanlineco.com/api/data?add=clients,platforms"
{"user":"you@domain.com","timestamp":"2026-06-25T21:57:17.980Z","clients":[{"id":"rec9Qd2Qa62UsJe02","client_id":"1782424487662","name":"Client 5","email":"","industry":"Artificial Intelligence","join_date":"2026-06-25","notes":"Enjoys simple, functional and effective APIs.","delivery_freq_days":30,"sent":false,"checkboxes":{},"contracts":[],"files":[{"name":"titanline.txt","url":"https://files.titanlineco.com/titanline.txt","type":"document","text":"The API ships its own knowledge base with every response. Two primitives: GET and POST. The AI reads the spec, assembles whatever sequence the context demands, executes, then re-GETs to confirm state changed. No separate docs page. No manual configuration. No success prints. The response is never the confirmation. The next GET is."}]},{"id":"recxhmNUXq0Te3P12","client_id":"1782206092111","name":"Client 1","email":"client@example.com","industry":"SaaS","join_date":"2026-06-23","notes":"","delivery_freq_days":30,"sent":false,"checkboxes":{},"contracts":[{"name":"contract.pdf","url":"https://files.titanlineco.com/contract.pdf","text":"This agreement is entered into between Client 1 and the service provider..."}],"files":[]}],"client_count":2}

Ready to connect your data?

Subscribe to get your API key from the Settings panel.

Get started
Q&As | Pricing | Titanline API for AI Models
Privacy Policy | Terms of Service | Refund Policy