Quickstart

Get from zero to your first authenticated API call in five minutes.

1. Sign up

Create a seller account at /signup. Pick the seller role during signup so you get a Growth Engine wallet provisioned automatically on the Free tier.

2. Get an access token

Indibaba uses JWT bearer tokens. The simplest way is the password login endpoint:

bash
curl -X POST https://api.indibaba.com/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "+919998887776",
    "password": "your-password"
  }'

The response includes:

json
{
  "access_token": "eyJ...",
  "refresh_token": "eyJ...",
  "token_type": "Bearer",
  "expires_in": 900
}

Access tokens expire after 15 minutes; use the refresh token at POST /v1/auth/refresh to get a new one.

3. Call an authenticated endpoint

Fetch your billing wallet to confirm auth works:

bash
curl https://api.indibaba.com/v1/seller/growth/billing/wallet \
  -H "Authorization: Bearer eyJ..."
json
{
  "data": {
    "wallet": {
      "id": 42,
      "owner_type": "seller",
      "owner_id": 1234,
      "tier": "free",
      "balances": {
        "campaign_sends": 500,
        "voice_call_seconds": 0,
        "chatbot_tokens": 10000,
        "automation_runs": 50,
        "webhook_deliveries": 100,
        "import_rows": 1000
      },
      "effective_caps": { "...": "..." },
      "auto_recharge_enabled": false
    },
    "recent_ledger": []
  }
}

4. Create your first contact

bash
curl -X POST https://api.indibaba.com/v1/seller/growth/contacts \
  -H "Authorization: Bearer eyJ..." \
  -H "Content-Type: application/json" \
  -d '{
    "email": "lead@example.com",
    "full_name": "First Lead",
    "tags": ["from-api"]
  }'

Returns the created contact with its assigned id. From here you can add it to a segment, target it with a campaign, or let an automation pick it up via the contact_subscribed trigger.

5. Wire a webhook

Subscribe to events you care about and route them to your CRM:

bash
curl -X POST https://api.indibaba.com/v1/seller/growth/webhooks \
  -H "Authorization: Bearer eyJ..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Zapier CRM sync",
    "url": "https://hooks.zapier.com/hooks/catch/123/abc",
    "subscribed_event_types": [
      "marketing.contact.created",
      "orders.completed"
    ]
  }'

The response includes a secret_plain field returned once. Store it immediately — it’s used to verify deliveries. See the webhook signatures guide for verifier samples in 4 languages.

Mock mode: If you’re running the stack locally without Razorpay keys configured, mock mode kicks in automatically. PAYG and subscription flows synthesise deterministic mock_* ids so you can develop end-to-end without live credentials.

What next?