Welcome to the #about Documentation

The complete reference guide for integrating, building, and scaling with the #about platform. Everything you need to get started and build production-grade applications.

๐Ÿ’ก
Tip Use the sidebar to navigate between sections. The documentation is organized by topic for easy reference.

โšก Quick Start

Get your first #about integration up and running in minutes. This guide walks you through the essential steps to authenticate, make your first API call, and process responses.

Prerequisites

  • Node.js 18+ or Python 3.10+
  • An #about account with API access enabled
  • Basic familiarity with REST APIs
โœ…
Ready to go? If you don't have an account yet, sign up for free and grab your API key from the dashboard.

Step 1: Install the SDK

Terminal
# Install via npm npm install @about/sdk # or yarn yarn add @about/sdk # or pnpm pnpm add @about/sdk
Terminal
# Install via pip pip install about-sdk # or for the latest dev version pip install git+https://github.com/about/sdk-python.git
HTML
<script src="https://cdn.about.dev/sdk/v3.2/about.min.js"></script>
Terminal
# Direct API call without SDK curl https://api.about.dev/v3/projects \ -H "Authorization: Bearer YOUR_API_KEY"

Step 2: Initialize the Client

JavaScript
import { AboutClient } from '@about/sdk'; const client = new AboutClient({ apiKey: process.env.ABOUT_API_KEY, environment: 'production', // or 'sandbox' timeout: 5000, retries: 3, }); // Make your first API call const projects = await client.projects.list(); console.log(`Found ${projects.total} projects`);
Python
from about import AboutClient client = AboutClient( api_key="your-api-key-here", environment="production", timeout=5.0, max_retries=3, ) # Make your first API call projects = client.projects.list() print(f"Found {projects.total} projects")

Step 3: Make Your First Call

JavaScript
// Create a new project const project = await client.projects.create({ name: "My Awesome Project", description: "Built with #about SDK", visibility: "private", tags: ["tutorial", "new"], }); console.log(`Created project: ${project.id}`); // Output: Created project: proj_abc123def456
๐ŸŽ‰
Success! You've made your first #about API call. Next, explore the full API reference or dive into authentication details.

๐Ÿ“ฆ Installation

#about offers SDKs for multiple platforms. Choose the one that best fits your stack.

Supported Platforms

Platform Package Version Status
JavaScript / TypeScript @about/sdk 3.2.1 Stable
Python about-sdk 3.2.0 Stable
Ruby about-ruby 3.1.4 Stable
Go github.com/about/go-sdk 3.2.0 Stable
PHP about/about-php 3.0.2 Beta
Rust about-rs 0.9.0 Beta

Install via Package Manager

Choose your language and install the latest version using your preferred package manager.

Verify Installation

Run about --version to confirm the SDK is properly installed.

Configure Environment Variables

Add your API key to your environment: export ABOUT_API_KEY="your-key-here"

Start Building

Import the SDK and start making API calls. Check the Quick Start guide for a complete walkthrough.

๐Ÿ“ Project Structure

When using the #about CLI to scaffold a new project, the following directory structure is generated:

Terminal
my-about-project/ โ”œโ”€โ”€ .about/ # Configuration & secrets โ”‚ โ”œโ”€โ”€ config.json # Project configuration โ”‚ โ””โ”€โ”€ secrets.env # Environment secrets โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ index.js # Entry point โ”‚ โ”œโ”€โ”€ routes/ # API route handlers โ”‚ โ”‚ โ”œโ”€โ”€ projects.js โ”‚ โ”‚ โ””โ”€โ”€ webhooks.js โ”‚ โ”œโ”€โ”€ services/ # Business logic โ”‚ โ”‚ โ”œโ”€โ”€ auth.js โ”‚ โ”‚ โ””โ”€โ”€ content.js โ”‚ โ””โ”€โ”€ utils/ # Helper functions โ”‚ โ””โ”€โ”€ helpers.js โ”œโ”€โ”€ tests/ โ”‚ โ”œโ”€โ”€ __fixtures__/ โ”‚ โ””โ”€โ”€ integration.test.js โ”œโ”€โ”€ package.json โ”œโ”€โ”€ .gitignore โ””โ”€โ”€ README.md

๐Ÿ” Authentication

The #about API uses API keys and OAuth 2.0 for authentication. All API requests must include an authentication credential.

API Keys

API keys are the simplest way to authenticate. Include your key in the Authorization header of every request:

HTTP
GET /v3/projects HTTP/2 Host: api.about.dev Authorization: Bearer about_live_sk_a1b2c3d4e5f6g7h8i9j0 Content-Type: application/json X-About-Client-Id: client_abc123
โš ๏ธ
Security Warning Never expose your API keys in client-side code or public repositories. Use environment variables and server-side proxying.

Key Types

Type Prefix Scope Use Case
Sandbox about_test_sk_ Full access (test mode) Development & testing
Production about_live_sk_ Full access (live mode) Production deployments
Restricted about_live_rk_ Limited scope Third-party integrations

OAuth 2.0

For applications that act on behalf of users, use OAuth 2.0 authorization code flow:

JavaScript
import { OAuthClient } from '@about/sdk/oauth'; const oauth = new OAuthClient({ clientId: "your-client-id", clientSecret: process.env.CLIENT_SECRET, redirectUri: "https://yourapp.com/callback", scopes: ["projects:read", "projects:write", "analytics:read"], }); // Step 1: Get authorization URL const authUrl = oauth.getAuthorizationUrl(); // Step 2: Exchange code for tokens const tokens = await oauth.exchangeCode(code); // Step 3: Create authenticated client const client = new AboutClient({ accessToken: tokens.accessToken, refreshToken: tokens.refreshToken, });
๐Ÿ“Œ
Token Expiration Access tokens expire after 1 hour. Use the refresh token to obtain a new access token without re-authentication.

โš™๏ธ Configuration

The #about platform can be configured via environment variables, configuration files, or the SDK client constructor.

Environment Variables

Variable Description Default Required
ABOUT_API_KEY Your API key for authentication โ€” Yes
ABOUT_ENVIRONMENT API environment: sandbox or production sandbox No
ABOUT_BASE_URL Custom API base URL https://api.about.dev/v3 No
ABOUT_TIMEOUT Request timeout in milliseconds 5000 No
ABOUT_MAX_RETRIES Maximum retry attempts for failed requests 3 No
ABOUT_LOG_LEVEL Logging verbosity: silent, info, debug info No

Configuration File

JSON
{ "apiKey": "about_live_sk_...", "environment": "production", "timeout": 5000, "retries": 3, "logLevel": "info", "regions": { "default": "us-east-1", "analytics": "eu-west-1" } }

๐Ÿ“ก API Reference

Our REST API is organized around resources. Every API call follows the pattern /v3/{resource} and returns JSON responses.

๐Ÿ“Œ
API Base URL https://api.about.dev/v3

Users

GET /v3/users/me

Get the authenticated user's profile information.

Headers

Authorization Required

Bearer API key. Example: Bearer about_live_sk_...

Response

JSON โ€” 200 OK
{ "id": "usr_xyz789", "name": "Alex Johnson", "email": "alex@example.com", "role": "admin", "avatar": "https://cdn.about.dev/avatars/usr_xyz789.jpg", "created_at": "2024-01-15T08:30:00Z", "plan": { "tier": "professional", "api_calls_limit": 100000, "api_calls_used": 2341 } }

Status Codes

200 Successfully retrieved user profile
401 Unauthorized โ€” Invalid or missing API key
POST /v3/users

Create a new team member or user account.

Request Body

name string Required

Full name of the user. Maximum 100 characters.

email string Required

Valid email address. Must not already be in use.

role enum Required

One of: admin, member, viewer

metadata object Optional

Custom key-value pairs for additional user data.

Response

JSON โ€” 201 Created
{ "id": "usr_new123", "name": "New User", "email": "new@example.com", "role": "member", "invitation_sent": true, "created_at": "2025-01-20T12:00:00Z" }

Projects

GET /v3/projects

List all projects with optional filtering and pagination.

Query Parameters

page integer Optional

Page number for pagination. Default: 1

per_page integer Optional

Results per page. Range: 1-100. Default: 20

sort string Optional

Sort field: created_at, name, updated_at. Prefix with - for descending.

status enum Optional

Filter by status: active, archived, draft

Analytics

POST /v3/analytics/query

Execute an analytics query to retrieve metrics and reports. Beta

Request Body

metrics array Required

List of metrics to retrieve. Examples: pageviews, conversions, revenue

date_range object Required

Date range object with start and end dates (ISO 8601 format).

granularity enum Optional

Data granularity: hourly, daily, weekly, monthly. Default: daily

dimensions array Optional

Dimensions to group results by. Examples: country, device, source

Response

JSON โ€” 200 OK
{ "query_id": "q_abc123", "status": "completed", "data": { "pageviews": [{"date":"2025-01-01","value":1234},{"date":"2025-01-02","value":1567}], "conversions": [{"date":"2025-01-01","value":42},{"date":"2025-01-02","value":58}] }, "summary": { "total_pageviews": 2801, "total_conversions": 100, "conversion_rate": 0.0357 } }

๐Ÿช Webhooks

Webhooks allow you to receive real-time notifications when events occur in your #about account. Configure webhook endpoints to subscribe to specific event types.

Event Types

Event Trigger Available
project.created A new project is created Stable
project.updated A project is modified Stable
project.deleted A project is permanently deleted Stable
user.invited A new team member is invited Stable
analytics.report_ready Analytics report generation completes Beta
payment.failed A payment or subscription charge fails Stable

Webhook Payload

JSON
{ "id": "evt_abc123", "type": "project.created", "timestamp": "2025-01-20T15:30:00Z", "data": { "project": { "id": "proj_xyz789", "name": "New Project", "status": "active", "owner_id": "usr_def456" } }, "signature": "sha256=abc123def456..." }
โš ๏ธ
Verify Signatures Always verify the webhook signature using the X-About-Signature header to ensure the payload originated from #about.

๐Ÿ“Š Rate Limiting

API requests are rate-limited to ensure fair usage and platform stability. Limits vary by plan tier.

Plan Requests / Minute Requests / Day Burst Limit
Free 60 1,000 10
Starter 300 10,000 30
Professional 1,000 100,000 100
Enterprise 10,000 Unlimited 500
๐Ÿ“Œ
Rate Limit Headers Every API response includes rate limit information: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

๐Ÿ”„ Migrations

Follow these guides when migrating between API versions or upgrading your integration.

v2 โ†’ v3 Migration

๐Ÿšจ
Breaking Changes v3 introduces several breaking changes. Review the migration guide carefully before upgrading.

Key Changes

  • Base URL: Changed from api.about.dev/api to api.about.dev/v3
  • Pagination: Replaced cursor-based pagination with offset-based pagination
  • Response format: Wrapped responses in { data, meta, links } envelope
  • Error format: Standardized error objects with { code, message, details }
  • Auth headers: Now requires Bearer prefix (v2 used Token)
Migration Helper
# Run the migration helper to audit your codebase npx @about/migrate v2-to-v3 # It will: # โœ“ Detect deprecated API calls # โœ“ Update base URLs # โœ“ Suggest auth header changes # โœ“ Generate a migration report

๐Ÿš€ Deployment

Deploy your #about-integrated application to any major cloud platform with our deployment guides.

โœจ Best Practices

Follow these guidelines to build reliable, efficient, and secure integrations with the #about platform.

Error Handling

JavaScript
try { const project = await client.projects.create(payload); } catch (error) { if (error.code === 'RATE_LIMITED') { // Implement exponential backoff await sleep(error.retry_after * 1000); return retry(payload); } if (error.code === 'VALIDATION_ERROR') { error.details.forEach(detail => { console.error(`${detail.field}: ${detail.message}`); }); } throw error; // Re-throw for upstream handling }

Security Checklist

  • โœ“ Always use ABOUT_ENVIRONMENT=sandbox during development
  • โœ“ Store API keys in environment variables, never in code
  • โœ“ Use restricted API keys for third-party integrations
  • โœ“ Implement webhook signature verification
  • โœ“ Use HTTPS for all API calls
  • โœ“ Rotate API keys periodically
  • โœ“ Enable IP allowlisting for production keys

๐Ÿ“‹ Changelog

Stay up to date with the latest releases, features, and fixes.

v3.2.0
January 15, 2025
Feature Added analytics query endpoint (Beta)
Feature New users/list endpoint with filtering
Docs Updated all SDK documentation and examples
v3.1.4
January 3, 2025
Fix Corrected webhook retry logic for failed deliveries
v3.1.3
December 18, 2024
Feature Added EU region support for analytics endpoints
Breaking Dropped Node.js 16 support
v3.1.2
December 5, 2024
Fix Resolved SDK initialization race condition
Docs Added migration guide for v2 โ†’ v3

๐Ÿ“š SDK Reference

Complete API reference for each supported SDK. Browse by language for detailed type signatures and method descriptions.

โ“ FAQ

How do I get my API key?

Log in to your #about dashboard, navigate to Settings โ†’ API Keys, and click "Generate New Key". Keep your keys secure and never share them publicly.

Is there a free tier?

Yes! Our free tier includes 1,000 API calls per day with sandbox access. No credit card required to get started.

What happens when I exceed my rate limit?

You'll receive a 429 Too Many Requests response. The response includes a Retry-After header indicating how many seconds to wait before making another request. We recommend implementing exponential backoff.

Can I use #about with serverless functions?

Absolutely. Our SDKs are designed to work seamlessly with AWS Lambda, Cloudflare Workers, Vercel Functions, and all other serverless platforms. Cold start times are optimized to under 50ms.

How do I handle webhook retries?

We retry failed webhook deliveries 3 times with exponential backoff (1min, 5min, 15min). If all retries fail, the event is sent to your dead-letter queue. Always respond with a 200 OK status to acknowledge receipt.

๐Ÿ’ฌ Support

Need help? We're here for you.

๐Ÿ“Œ
Enterprise Support Enterprise customers receive dedicated Slack channels, priority response (SLA: 1 hour), and a dedicated account manager.