Developer Documentation

Everything you need to integrate with the API Wrapper platform.

Getting Started

Welcome to API Wrapper

API Wrapper provides a unified interface to access multiple business APIs (LinkedIn, Twitter, and more) using a single API key. This documentation will help you get started quickly.

Prerequisites

  • A free API Wrapper account
  • An API key from the dashboard
  • Your favorite HTTP client (curl, Postman, etc.)

Quick Start

# Set your API key
export API_KEY="your_api_key_here"

# Make your first request
curl -H "Authorization: Bearer $API_KEY" \
  "https://api.apiwrapper.dev/api/v1/linkedin/profile?username=john-doe"

Authentication

API Key Authentication

All API requests require authentication via a Bearer token in the Authorization header. You can generate API keys from your dashboard.

Headers

Authorization: Bearer api_abc123def456...
Content-Type: application/json

Error Responses

If authentication fails, you will receive a 401 response:

{
  "error": "Invalid or deactivated API key."
}

Security Note: Never share your API keys or commit them to version control. Regenerate compromised keys immediately from the dashboard.

Endpoints

Available Endpoints

LinkedIn Profile

GET/api/v1/linkedin/profile
ParameterTypeRequiredDescription
usernamestringYesLinkedIn public profile username

Example Response

{
  "username": "john-doe",
  "firstName": "John",
  "lastName": "Doe",
  "headline": "Senior Software Engineer at Tech Corp",
  "location": "San Francisco Bay Area",
  "industry": "Technology",
  "profilePicture": null,
  "summary": "Experienced software engineer...",
  "experience": [
    {
      "title": "Senior Software Engineer",
      "company": "Tech Corp",
      "location": "San Francisco, CA",
      "startDate": "2020-03",
      "endDate": null,
      "description": "Building the next generation..."
    }
  ],
  "education": [...],
  "skills": ["TypeScript", "Python", "Go", ...],
  "publicProfileUrl": "https://www.linkedin.com/in/john-doe"
}

Rate Limits

Rate Limiting

API Wrapper uses a token bucket algorithm for rate limiting. Each tier has a different limit:

TierLimitWindow
Free100 requests1 hour
Pro1,000 requests1 hour

Rate Limit Headers

Every response includes rate limit information in the headers:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1712345678

When you exceed your limit, you will receive a 429 Too Many Requests response.

Caching

Caching

API responses are cached for 60 seconds by default. Cached responses are served faster and do not count against your rate limit.

Cache Headers

Check the X-Cache header to see if a response was cached:

  • X-Cache: HIT — Response served from cache
  • X-Cache: MISS — Response fetched fresh

Caching uses Redis in production with an in-memory fallback for development.

Code Examples

Code Examples

cURL

curl -H "Authorization: Bearer api_abc123..." \
  "https://api.apiwrapper.dev/api/v1/linkedin/profile?username=john-doe"

Python

import requests

API_KEY = "api_abc123..."
headers = {"Authorization": f"Bearer {API_KEY}"}
params = {"username": "john-doe"}

response = requests.get(
    "https://api.apiwrapper.dev/api/v1/linkedin/profile",
    headers=headers,
    params=params,
)

print(response.json())

JavaScript / TypeScript

const API_KEY = "api_abc123...";

const response = await fetch(
  "https://api.apiwrapper.dev/api/v1/linkedin/profile?username=john-doe",
  {
    headers: {
      Authorization: `Bearer ${API_KEY}`,
    },
  }
);

const data = await response.json();
console.log(data);

Go

package main

import (
    "fmt"
    "net/http"
    "io"
)

func main() {
    req, _ := http.NewRequest("GET",
        "https://api.apiwrapper.dev/api/v1/linkedin/profile?username=john-doe",
        nil)
    req.Header.Set("Authorization", "Bearer api_abc123...")

    client := &http.Client{}
    resp, _ := client.Do(req)
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}