API getting started

Authenticate and start making API calls to Grivo.

Last updated: April 2026

Authentication

All API requests require an API key. Get yours from Settings → API Keys in the Grivo dashboard.

Include the API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY

⚠️ Security: Never expose your API key in client-side code. Only use it in server-to-server requests.

Base URL

https://api.grivo.io/v1

All endpoints are relative to this base URL.

Quick example

List all your chatbots:

curl -X GET https://api.grivo.io/v1/chatbots \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response:

{
  "data": [
    {
      "id": "bot_abc123",
      "name": "My Support Bot",
      "status": "active",
      "pages_trained": 47,
      "created_at": "2026-03-15T10:30:00Z"
    }
  ],
  "total": 1,
  "page": 1
}

Endpoints overview

Chatbot endpoints

MethodEndpointDescription
GET/chatbotsList all chatbots
POST/chatbotsCreate a new chatbot
GET/chatbots/:idGet chatbot details
PATCH/chatbots/:idUpdate chatbot settings
DELETE/chatbots/:idDelete a chatbot

Contact endpoints

MethodEndpointDescription
GET/contactsList all contacts
POST/contactsAdd a new contact
POST/contacts/importBulk import via CSV
DELETE/contacts/:idDelete a contact

Campaign endpoints

MethodEndpointDescription
GET/campaignsList all campaigns
POST/campaignsCreate a campaign
POST/campaigns/:id/sendSend a campaign
GET/campaigns/:id/statsGet campaign analytics

Rate limits

PlanRate limit
Free60 requests/minute
Pro300 requests/minute

When rate limited, the API returns a 429 Too Many Requests status with a Retry-After header.

Error handling

All errors return a consistent JSON format:

{
  "error": {
    "code": "invalid_api_key",
    "message": "The API key provided is invalid.",
    "status": 401
  }
}

Common error codes:

  • 400 - Bad request (invalid parameters)
  • 401 - Unauthorized (missing or invalid API key)
  • 403 - Forbidden (plan limit or permission issue)
  • 404 - Resource not found
  • 429 - Rate limit exceeded
  • 500 - Internal server error

SDKs & libraries

Official SDKs are in development. In the meantime, use any HTTP library in your preferred language:

  • JavaScript/Node.js - fetch or axios
  • Python - requests or httpx
  • PHP - Guzzle
  • Ruby - httparty

Need help? Reach out at support@grivo.io or join our community.