Back to HomeDeveloper

API Reference

Integrate OPINIS sentiment analysis into your applications. All endpoints return JSON. Rate limits depend on your plan tier.

Authentication

All API endpoints require an API key passed via the X-API-Key header.

curl -X POST https://api.pulsesenti.com/api/v1/analyze \
  -H "Content-Type: application/json" \
  -H "X-API-Key: pk_live_your_api_key_here" \
  -d '{"text": "This product is amazing!"}'

Generate API keys from your Dashboard → API Keys.

Base URL

https://api.pulsesenti.com/api/v1

Endpoints

Analysis

POST/analyze

Analyze a single text for sentiment, emotions, keywords, and sentence-level breakdown.

Auth:API Key
Request Body
{
  "text": "This product is incredible!",
  "context": {                         // optional
    "typingStatus": "enthusiastic"
  }
}
Response
{
  "data": {
    "id": "uuid",
    "score": 92,
    "label": "positive",
    "confidence": 0.97,
    "summary": "Highly positive sentiment...",
    "emotions": {
      "joy": 88,
      "anger": 2,
      "fear": 0,
      "surprise": 15
    },
    "keywords": [
      { "word": "incredible", "sentiment": 95 }
    ],
    "sentences": [
      { "text": "This product is incredible!", "sentiment": 92 }
    ]
  },
  "meta": { "fromCache": false }
}
POST/analyze/batch

Upload a CSV file for bulk sentiment analysis. The file should have a 'text' column.

Auth:API Key
Request Body
Content-Type: multipart/form-data

file: your_reviews.csv
projectId: "uuid" (optional)
Response
{
  "data": {
    "jobId": "uuid",
    "rowCount": 150,
    "status": "queued"
  }
}
GET/analyze/batch/:jobId

Check the status and results of a batch analysis job.

Auth:API Key
Response
{
  "data": {
    "id": "uuid",
    "status": "completed",
    "progress": 100,
    "results": [ ... ]
  }
}

History

GET/analyses?page=1&limit=20

Retrieve your analysis history with pagination.

Auth:API Key
Response
{
  "data": [ { "id": "...", "inputText": "...", "score": 85, ... } ],
  "meta": { "page": 1, "limit": 20, "total": 142, "pages": 8 }
}
DELETE/analyses/:id

Delete a specific analysis from your history.

Auth:API Key
Response
{ "data": { "deleted": true } }

Projects

GET/projects

List all your projects.

Auth:API Key
Response
{ "data": [ { "id": "uuid", "name": "Support Tickets", ... } ] }
POST/projects

Create a new project.

Auth:API Key
Request Body
{ "name": "Q3 Reviews", "description": "Customer reviews from Q3" }
Response
{ "data": { "id": "uuid", "name": "Q3 Reviews", ... } }

Rate Limits

PlanMonthly LimitRate LimitBatch Max
Hobby50010 req/min100 rows
Starter10,00030 req/min1,000 rows
Pro500,000100 req/min10,000 rows
EnterpriseUnlimitedCustomCustom

Error Codes

CodeHTTPDescription
VALIDATION_ERROR400Invalid request body or parameters
UNAUTHORIZED401Missing or invalid API key
FORBIDDEN403Key does not have access to this resource
NOT_FOUND404Resource not found
RATE_LIMITED429Too many requests — slow down
LIMIT_REACHED429Monthly usage limit exceeded
AI_UNAVAILABLE503AI providers temporarily unavailable