Skip to content
All pages

Reference

Account & platform

The credential, the plan, credits and limits, and the machine-readable description of this whole surface.

Retrieve the index

GET /api/v1

What this API is, and what this credential may do with it.

any valid token paginated

Answers

200

The answer.

Plus the shared refusals: 401, 402, 403, 404, 422 and 429, described on Errors.

GET /api/v1
curl https://titanweather.com/api/v1 \
  -H "Authorization: Bearer $TITAN_API_TOKEN"
Response 200
{
    "object": "index",
    "version": "v1",
    "documentation": "https://titanweather.com/api/v1/openapi.json",
    "abilities": [
        {
            "name": "reports:read",
            "label": "Read reports",
            "description": "List reports and read their findings, records and coverage.",
            "granted": true
        },
        {
            "name": "reports:write",
            "label": "Create and delete reports",
            "description": "Request new reports, and delete existing ones.",
            "granted": false
        }
    ],
    "endpoints": [
        {
            "method": "GET",
            "path": "/api/v1/reports",
            "name": "api.v1.reports.index",
            "ability": "reports:read",
            "granted": true
        },
        {
            "method": "POST",
            "path": "/api/v1/reports",
            "name": "api.v1.reports.store",
            "ability": "reports:write",
            "granted": false
        }
    ],
    "limits": {
        "per_page_max": 100,
        "batch": {
            "properties": 100,
            "reports": 25
        },
        "download_link_ttl_minutes": 15,
        "rate_limit_per_minute": 120,
        "plan": "professional"
    }
}

Retrieve the account

GET /api/v1/account

The credential, the plan, and the limits, before anything is spent.

any valid token

Answers

200

The answer.

Plus the shared refusals: 401, 402, 403, 404, 422 and 429, described on Errors.

GET /api/v1/account
curl https://titanweather.com/api/v1/account \
  -H "Authorization: Bearer $TITAN_API_TOKEN"
Response 200
{
    "object": "account",
    "team": {
        "name": "North Texas Claims Group",
        "plan": "professional",
        "plan_label": "Professional",
        "on_trial": false,
        "lapsed": false
    },
    "limits": {
        "lookback_years": 10,
        "max_radius_miles": 10,
        "monthly_reports": 25,
        "reports_used": 7,
        "reports_remaining": 18,
        "pdf_export": true
    },
    "credits": {
        "balance": 18,
        "monthly_allowance": 25,
        "used_this_period": 7,
        "renews_at": "2026-09-01T00:00:00Z"
    },
    "token": {
        "name": "Claims intake",
        "prefix": "wt_9f3kd02m",
        "abilities": [
            "reports:read",
            "reports:write",
            "reports:export"
        ],
        "expires_at": null,
        "last_used_at": "2026-08-23T14:02:11Z"
    }
}

Retrieve the team

GET /api/v1/team

What the plan includes, and how much of each allowance is spoken for.

account:read

Answers

200

The answer.

Plus the shared refusals: 401, 402, 403, 404, 422 and 429, described on Errors.

GET /api/v1/team
curl https://titanweather.com/api/v1/team \
  -H "Authorization: Bearer $TITAN_API_TOKEN"
Response 200
{
    "object": "team",
    "name": "North Texas Claims Group",
    "timezone": "America/Chicago",
    "plan": {
        "tier": "professional",
        "label": "Professional",
        "on_trial": false,
        "lapsed": false
    },
    "includes": {
        "api": true,
        "pdf_export": true,
        "observations": true,
        "imagery": true,
        "compose_layout": true,
        "report_branding": false,
        "property_intelligence": true,
        "live_warnings": true,
        "record_alerts": true
    },
    "limits": {
        "lookback_years": 10,
        "max_radius_miles": 10,
        "properties": {
            "held": 61,
            "limit": 250
        },
        "territories": {
            "held": 3,
            "limit": 10,
            "max_area_sq_miles": 500
        },
        "watch_radius_miles": 5
    },
    "credits": {
        "balance": 18,
        "monthly_allowance": 25,
        "used_this_period": 7,
        "renews_at": "2026-09-01T00:00:00Z"
    },
    "links": {
        "credits": "https://titanweather.com/api/v1/credits",
        "monitoring": "https://titanweather.com/api/v1/monitoring/runs"
    }
}

Retrieve the credit balance

GET /api/v1/credits

The balance, the allowance, and when it renews.

account:read

Answers

200

The answer.

Plus the shared refusals: 401, 402, 403, 404, 422 and 429, described on Errors.

GET /api/v1/credits
curl https://titanweather.com/api/v1/credits \
  -H "Authorization: Bearer $TITAN_API_TOKEN"
Response 200
{
    "object": "credits",
    "balance": 18,
    "monthly_allowance": 25,
    "used_this_period": 7,
    "renews_at": "2026-09-01T00:00:00Z",
    "lapsed_this_period": 0,
    "links": {
        "transactions": "https://titanweather.com/api/v1/credits/transactions"
    }
}

List credit transactions

GET /api/v1/credits/transactions

The ledger, newest first. Every charge names the report it paid for.

account:read paginated

Query parameters

kind enum

Only movements of this kind.

Answers

200

The answer.

Plus the shared refusals: 401, 402, 403, 404, 422 and 429, described on Errors.

GET /api/v1/credits/transactions
curl https://titanweather.com/api/v1/credits/transactions?kind=spend \
  -H "Authorization: Bearer $TITAN_API_TOKEN"
Response 200
{
    "data": [
        {
            "id": 9412,
            "object": "credit_transaction",
            "kind": "spend",
            "amount": -1,
            "balance_after": 18,
            "description": "Report compiled",
            "note": null,
            "report_id": "0198b6c0-51a9-70f2-8e4d-93b2a7c15f60",
            "created_at": "2026-08-21T16:44:09Z"
        }
    ],
    "links": {
        "first": "https://titanweather.com/api/v1/credits/transactions?page=1",
        "last": "https://titanweather.com/api/v1/credits/transactions?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "https://titanweather.com/api/v1/credits/transactions",
        "per_page": 25,
        "to": 1,
        "total": 1
    }
}

List monitoring runs

GET /api/v1/monitoring/runs

When detection last ran, so quiet can be told from stopped.

account:read

Answers

200

The answer.

Plus the shared refusals: 401, 402, 403, 404, 422 and 429, described on Errors.

GET /api/v1/monitoring/runs
curl https://titanweather.com/api/v1/monitoring/runs \
  -H "Authorization: Bearer $TITAN_API_TOKEN"
Response 200
{
    "object": "list",
    "data": [
        {
            "object": "monitoring_run",
            "lane": "warnings",
            "lane_label": "Live warnings",
            "status": "complete",
            "started_at": "2026-08-23T13:50:00Z",
            "finished_at": "2026-08-23T13:50:04Z",
            "watermark": "2026-08-23T13:50:00Z",
            "candidates": 2,
            "written": 1,
            "notified": 1,
            "failure_reason": null
        }
    ],
    "lanes": [
        "record",
        "warnings",
        "surfaces"
    ]
}

Retrieve the OpenAPI document

GET /api/v1/openapi.json

This document.

any valid token

Answers

200

The answer.

Plus the shared refusals: 401, 402, 403, 404, 422 and 429, described on Errors.

GET /api/v1/openapi.json
curl https://titanweather.com/api/v1/openapi.json \
  -H "Authorization: Bearer $TITAN_API_TOKEN"
Response 200
{
    "openapi": "3.1.0",
    "info": {
        "title": "Titan Weather API",
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "https://titanweather.com"
        }
    ],
    "security": [
        {
            "bearerAuth": []
        }
    ],
    "tags": [
        {
            "name": "Reports",
            "description": "Compiling and reading weather reports, and their documents."
        }
    ],
    "paths": {
        "...": "every endpoint on this surface, one path at a time"
    }
}
esc
move open 72 places