API Docs · Developer API
Working API endpoints for this server. Tokens are shown masked only, never in plain text — the sessions list returns only the last 4 characters, and no password hash is ever returned. A personal API key is SEPARATE from the Meta webhook verify token: one is never accepted for the other.
Personal API keys (admin only — shown once, then masked)
Regenerate = revoke the old key and create a new one (shown once). Rate limit: 100 requests per minute per key; over the limit answers 429 with Retry-After. Auth: header x-api-key or ?api_key=. Base URL: this panel origin + /api/v1/.
API keys (masked)
| Name | Key (masked) | Created | Last used | Status | Actions |
|---|
API endpoints
| Method | Path | Description |
|---|
Public Developer API (v1) endpoints
| Method | Path | What it does |
|---|---|---|
| GET | /api/v1/templates | List templates (name, language, category, status) |
| GET | /api/v1/conversations | List chats (phones masked) |
| POST | /api/v1/conversations/:id/assign | Assign a chat {memberId} |
| POST | /api/v1/conversations/:id/send | Send a message {body} (Meta text send; unconfigured = honest refusal) |
Error reference
| Code | Meaning |
|---|---|
| 401 | developer_key_invalid — missing, wrong or revoked API key (a session token or a Meta verify token never works here) |
| 403 | developer_key_wrong_business — the key belongs to another business |
| 429 | rate_limited — 100/min per key; Retry-After seconds in the header |
| 404 | v1 endpoint not found / conversation not found for this business |
| 400 | meta_not_configured — nothing sent, nothing stored as sent |
Code samples
curl: curl -H "x-api-key: upv_YOUR_KEY" https://upvort.com/api/v1/templates
JS: fetch("/api/v1/templates", {headers:{"x-api-key":"upv_YOUR_KEY"}}).then(r=>r.json())
Python: requests.get(base+"/api/v1/templates", headers={"x-api-key":"upv_YOUR_KEY"})
PHP: curl with header "x-api-key: upv_YOUR_KEY"Never paste a real key into a sample, a screenshot or chat — keys are shown once at creation and then masked.