Developers

Everything in the console. In the API.

Start agents, place calls, get signed webhooks.

REST API

Place a call in one request.

Whatever is in context, the agent knows first.

  • Scoped keys per workspace
  • OpenAPI spec at /v1/openapi.json
POST /v1/calls
curl https://in.console.govodo.ai/v1/calls \ -H "Authorization: Bearer $GOVODO_API_KEY" \ --json '{ "agent_id": "3f2a…", "to_number": "+91 98765 43210", "mode": "queue", "context": { "name": "Priya", "reason": "confirm Friday 11:00" } }'
Triggers

Start an agent from your system.

Its own URL and secret. Unsigned requests are refused.

All triggers

python
import hashlib, hmac, json, time, requests body = json.dumps({"phone": "+919876543210", "name": "Priya"}).encode() ts = str(int(time.time())) sig = hmac.new(SECRET.encode(), ts.encode() + b"." + body, hashlib.sha256).hexdigest() requests.post( f"https://in.console.govodo.ai/api/hooks/trigger/{KEY}", data=body, headers={"Content-Type": "application/json", "X-CallOS-Timestamp": ts, "X-CallOS-Signature": "sha256=" + sig}, )
Webhooks

Know when a conversation ends.

Signed, timestamped and retried with backoff.

call.completedconversation.completed
verify a delivery
def verify(secret, headers, raw_body): ts = headers["X-CallOS-Timestamp"] if abs(time.time() - int(ts)) > 300: return False # too old: a replay want = "sha256=" + hmac.new( secret.encode(), ts.encode() + b"." + raw_body, hashlib.sha256).hexdigest() return hmac.compare_digest( want, headers["X-CallOS-Signature"])
Platforms and resellers

Many workspaces, one integration.

Platform keysWorkspaces from a script
Your brandName, logo and colours
Usage per workspaceFor your billing