Documentation

Everything you need to know about using Summize.app to transform your data into actionable insights.

Documentation β€Ί Developer Resources β€Ί REST API Reference

REST API Reference

20 min read Advanced Last updated: Apr 5, 2026

Complete REST API documentation for integrating Summize into your applications and workflows. Our API allows you to upload data, generate narratives, and retrieve insights programmatically.

πŸ”‘ API Key Required

All API requests require authentication using your API key. You can generate API keys from your account settings.

Authorization: Bearer YOUR_API_KEY

Base URL

https://api.summize.app/v1

Authentication

Include your API key in the Authorization header of every request:

curl -H "Authorization: Bearer sk_live_..." \
     -H "Content-Type: application/json" \
     https://api.summize.app/v1/narratives

Core Endpoints

POST /data/upload

Upload data for analysis and narrative generation.

Request Body

{
  "data": [
    {
      "date": "2024-01-01",
      "revenue": 12000,
      "orders": 45,
      "channel": "organic"
    },
    {
      "date": "2024-01-02", 
      "revenue": 15000,
      "orders": 52,
      "channel": "paid"
    }
  ],
  "metadata": {
    "name": "Weekly Sales Data",
    "description": "E-commerce sales performance",
    "tags": ["sales", "weekly"]
  }
}

Response

{
  "success": true,
  "data_id": "dat_1234567890",
  "status": "processing",
  "rows_processed": 2,
  "estimated_completion": "2024-01-15T10:30:00Z"
}
POST /narratives/generate

Generate AI narratives from uploaded data.

Request Body

{
  "data_id": "dat_1234567890",
  "config": {
    "role": "ceo",
    "tone": "concise", 
    "template": "weekly_summary",
    "language": "en"
  },
  "custom_context": {
    "business_type": "e-commerce",
    "key_metrics": ["revenue", "orders", "conversion_rate"],
    "goals": ["growth", "efficiency"]
  }
}

Response

{
  "success": true,
  "narrative_id": "nar_1234567890",
  "content": {
    "title": "Weekly Sales Performance Summary", 
    "narrative": "This week's revenue reached $27,000 (+12.5% vs last week) with 97 total orders. Paid channels outperformed organic with higher conversion rates...",
    "key_insights": [
      "Revenue growth of 12.5% week-over-week",
      "Paid channels showing 23% higher conversion", 
      "Order volume increased 15% from previous period"
    ],
    "recommendations": [
      "Increase investment in paid channel optimization",
      "Investigate organic channel performance decline"
    ]
  },
  "metadata": {
    "generated_at": "2024-01-15T10:35:42Z",
    "processing_time_ms": 2340,
    "confidence_score": 0.92,
    "word_count": 156
  }
}
GET /narratives

Retrieve your generated narratives with optional filtering.

Query Parameters

Parameter Type Description
limit integer Number of results (1-100, default: 20)
offset integer Pagination offset (default: 0)
date_from string Filter from date (ISO 8601)
date_to string Filter to date (ISO 8601)
template string Filter by template type
POST /webhooks

Configure webhooks to receive real-time notifications.

Webhook Events

  • data.uploaded - Data upload completed
  • narrative.generated - Narrative generation completed
  • narrative.shared - Narrative was shared
  • error.occurred - Processing error occurred

Error Handling

The API uses conventional HTTP response codes to indicate success or failure:

Success Codes

  • 200 - OK: Request successful
  • 201 - Created: Resource created
  • 202 - Accepted: Request accepted for processing

Error Codes

  • 400 - Bad Request: Invalid parameters
  • 401 - Unauthorized: Invalid API key
  • 429 - Too Many Requests: Rate limit exceeded
  • 500 - Internal Server Error: Server error

Error Response Format

{
  "success": false,
  "error": {
    "code": "invalid_data_format",
    "message": "The uploaded data format is not supported",
    "details": {
      "supported_formats": ["json", "csv"],
      "received_format": "xml"
    }
  },
  "request_id": "req_1234567890"
}

Rate Limits

Current Limits

  • Free Plan: 100 requests per hour
  • Pro Plan: 1,000 requests per hour
  • Enterprise: Custom limits available

Rate limit headers are included in all responses to help you track usage.

SDKs and Libraries

We provide official SDKs to make integration easier:

Code Examples

Upload Data (cURL)

curl -X POST https://api.summize.app/v1/data/upload \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "data": [
      {"date": "2024-01-01", "revenue": 12000, "orders": 45},
      {"date": "2024-01-02", "revenue": 15000, "orders": 52}
    ],
    "metadata": {
      "name": "Weekly Sales",
      "tags": ["sales", "weekly"]
    }
  }'

Generate Narrative (Python)

import requests

headers = {
    'Authorization': 'Bearer sk_live_...',
    'Content-Type': 'application/json'
}

data = {
    'data_id': 'dat_1234567890',
    'config': {
        'role': 'ceo',
        'tone': 'concise',
        'template': 'weekly_summary'
    }
}

response = requests.post(
    'https://api.summize.app/v1/narratives/generate',
    headers=headers,
    json=data
)

narrative = response.json()

Retrieve Narratives (JavaScript)

const summize = new SummizeClient('sk_live_...');

// Get recent narratives
const narratives = await summize.narratives.list({
  limit: 10,
  date_from: '2024-01-01'
});

// Get specific narrative
const narrative = await summize.narratives.get('nar_1234567890');

πŸ”— Next Steps

Ready to start building with the Summize API?

Was this helpful?

Need more help?

Contact Support

Still need help?

Our support team is here to help you get the most out of Summize.

Live Chat

Get instant help from our support team

Email Support

Send us a detailed message

Contact Us

Video Tutorials

Watch step-by-step video guides

Watch Videos