OverviewAPI ReferenceResources

Quickstart

Create an API key, check it, and read the action items from your latest call. Three requests.


You need the Convo desktop app on a Starter plan or above. The API is at https://www.itsconvo.com/api/v1.

1. Create an API key

  1. Open the desktop app and go to Settings → Convo API.
  2. Click Create key, give the key a name and accept the API Terms of Use.
  3. Copy the key. It is shown only once.

The examples read the key from CONVO_API_KEY. Keep it on your server. More in Authentication.

export CONVO_API_KEY="convo_..."

2. Check your key

Call GET /user/profile to check your key and see your profile, plan and AI credit usage.

curl https://www.itsconvo.com/api/v1/user/profile \
  -H "Authorization: Bearer $CONVO_API_KEY"
const API = "https://www.itsconvo.com/api/v1";
const headers = { Authorization: `Bearer ${process.env.CONVO_API_KEY}` };

const { data: profile } = await (await fetch(`${API}/user/profile`, { headers })).json();
console.log(profile.subscription.tier);
import os
import requests

API = "https://www.itsconvo.com/api/v1"
headers = {"Authorization": f"Bearer {os.environ['CONVO_API_KEY']}"}

profile = requests.get(f"{API}/user/profile", headers=headers).json()["data"]
print(profile["subscription"]["tier"])
{
  "data": {
    "profile": { "name": "Alice Chen", "email": "alice@example.com" },
    "subscription": { "tier": "professional", "status": "active" },
    "apiUsage": { "aiGenerations": { "used": 1240, "limit": 15000, "remaining": 13760, "resetsAt": "2026-04-01T00:00:00.000Z" } }
  }
}

This response is shortened. Rate limit headers, including X-RateLimit-Remaining, are included in the response. A 401 means the key is wrong or the Bearer prefix is missing. See Error Codes.

3. Find your latest call

Calls come newest first.

curl "https://www.itsconvo.com/api/v1/conversations?limit=1" \
  -H "Authorization: Bearer $CONVO_API_KEY"
const { data: calls } = await (await fetch(`${API}/conversations?limit=1`, { headers })).json();
const callId = calls[0].id;
calls = requests.get(f"{API}/conversations", params={"limit": 1}, headers=headers).json()["data"]
call_id = calls[0]["id"]
{
  "data": [
    {
      "id": "session_1773842400000",
      "title": "Acme pilot pricing call",
      "startTime": "2026-03-18T14:00:00.000Z",
      "endTime": "2026-03-18T14:45:00.000Z",
      "duration": 45,
      "segmentCount": 187
    }
  ],
  "pagination": { "total": 42, "limit": 1, "offset": 0 }
}

4. Read its action items

curl https://www.itsconvo.com/api/v1/conversations/session_1773842400000/keypoints \
  -H "Authorization: Bearer $CONVO_API_KEY"
const { data: keyPoints } = await (await fetch(`${API}/conversations/${callId}/keypoints`, { headers })).json();
console.log(keyPoints.keypoints.actionItems);
key_points = requests.get(f"{API}/conversations/{call_id}/keypoints", headers=headers).json()["data"]
print(key_points["keypoints"]["actionItems"])
{
  "data": {
    "id": "session_1773842400000",
    "title": "Acme pilot pricing call",
    "keypoints": {
      "decisions": ["Start a two-team pilot in April"],
      "actionItems": [
        { "item": "Send the pilot pricing to Sarah", "owner": "Alice", "confidence": 0.95, "priority": "high" }
      ]
    },
    "createdAt": "2026-03-18T14:47:10.000Z"
  }
}

This response is shortened. The app generates key points after each call. If a call has none yet, you get a 404. POST to the same path generates them, for free.

What's Next?

Was this page helpful?