This page documents the developer-domain flow to authenticate, create async click2call jobs, and poll transcript status using internal call IDs.
https://developer.induslabs.ioDeveloper APIs route prefix: /api/developer.
{
"status_code": 200,
"message": "string or null",
"error": "string/object or null",
"data": {}
}
Auth/dependency failures may return FastAPI default errors like:
{ "detail": "Could not validate credentials" }
/api/developer/loginAuthenticate a verified active user and return access + refresh tokens.
| Name | Type | Default | Description |
|---|---|---|---|
email* | string | required | User email address. |
password* | string | required | User password. |
| Status | Type | Description |
|---|---|---|
200 OK | application/json | Login successful with access and refresh tokens. |
400 Bad Request | application/json | Incorrect credentials, inactive user, or unverified user. |
curl -X POST \
"https://developer.induslabs.io/api/developer/login" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "your_password"
}'
{
"status_code": 200,
"message": "Login successful",
"error": null,
"data": {
"access_token": "<jwt_access_token>",
"refresh_token": "<jwt_refresh_token>",
"token_type": "bearer"
}
}
/api/developer/calls/click2callCreate a click2call job for authenticated user. Call is queued and processed asynchronously.
| Name | Type | Default | Description |
|---|---|---|---|
Authorization* | header | required | Bearer <access_token> |
customer_number* | string | required | Customer phone number, e.g. 919999999999. |
agent_number* | string | required | Agent phone number, e.g. 918888888888. |
| Status | Type | Description |
|---|---|---|
200 OK | application/json | Click2Call request created and queued. |
401 Unauthorized | application/json | Missing or invalid token. |
400 Bad Request | application/json | Inactive user or validation issues. |
curl -X POST \
"https://developer.induslabs.io/api/developer/calls/click2call" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access_token>" \
-d '{
"customer_number": "919999999999",
"agent_number": "918888888888"
}'
{
"status_code": 200,
"message": "Click2Call request created",
"error": null,
"data": {
"call_id": "call_ab12cd34ef56gh78",
"status": "queued"
}
}
/api/developer/calls/{call_id}/transcriptFetch transcript metadata/content for a previously created click2call request.
| Name | Type | Default | Description |
|---|---|---|---|
Authorization* | header | required | Bearer <access_token> |
call_id* | path | required | Call ID returned by click2call endpoint. |
| Status | Type | Description |
|---|---|---|
200 OK | application/json | Transcript pending or transcript ready payload. |
403 Forbidden | application/json | User is not authorized for this call. |
404 Not Found | application/json | call_id not found. |
401 Unauthorized | application/json | Missing or invalid token. |
curl -X GET \
"https://developer.induslabs.io/api/developer/calls/call_ab12cd34ef56gh78/transcript" \
-H "Authorization: Bearer <access_token>"
{
"status_code": 200,
"message": "Transcript not available yet",
"error": null,
"data": {
"call_id": "call_ab12cd34ef56gh78",
"transcript_status": "pending",
"transcript": null
}
}
{
"status_code": 200,
"message": "Transcript found",
"error": null,
"data": {
"call_id": "call_ab12cd34ef56gh78",
"transcript_status": "ready",
"transcript": {
"transcript_id": "67c7....",
"summary": "Call summary text",
"call_outcome": "Interested",
"history": [],
"createdAt": "2026-03-05T10:00:00Z",
"updatedAt": "2026-03-05T10:01:00Z"
}
}
}
access_token.call_id.transcript_status = ready.BASE_URL="https://developer.induslabs.io"
LOGIN_RESP=$(curl -s -X POST "$BASE_URL/api/developer/login" \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"your_password"}')
ACCESS_TOKEN=$(echo "$LOGIN_RESP" | jq -r '.data.access_token')
CALL_RESP=$(curl -s -X POST "$BASE_URL/api/developer/calls/click2call" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d '{"customer_number":"919999999999","agent_number":"918888888888"}')
CALL_ID=$(echo "$CALL_RESP" | jq -r '.data.call_id')
curl -s -X GET "$BASE_URL/api/developer/calls/$CALL_ID/transcript" \
-H "Authorization: Bearer $ACCESS_TOKEN"
transcript: null while processing; this is expected.