Skip to content

REST API Endpoints

Overview

This page documents all available REST API endpoints. The API follows RESTful conventions with JSON request and response bodies. All endpoints require authentication unless otherwise noted.

Base URL

All API requests should be made to the following base URL:

https://api.example.com/v1

For development and testing, use the sandbox environment:

https://sandbox.api.example.com/v1

Authentication

All requests must include an API key in the Authorization header:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.example.com/v1/users

See the Authentication Overview for details on obtaining and managing API keys.

Users Endpoints

List All Users

Retrieve a paginated list of all users in your organization.

GET /users

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number for pagination
limitinteger20Number of results per page (max 100)
sortstring"created_at"Sort field (name, email, created_at)
orderstring"desc"Sort order (asc or desc)

Example Request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.example.com/v1/users?page=1&limit=10&sort=name&order=asc"

Example Response

{
  "data": [
    {
      "id": "usr_abc123",
      "name": "Jane Smith",
      "email": "jane@example.com",
      "role": "admin",
      "created_at": "2024-01-15T09:30:00Z"
    },
    {
      "id": "usr_def456",
      "name": "John Doe",
      "email": "john@example.com",
      "role": "member",
      "created_at": "2024-02-20T14:15:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 42,
    "total_pages": 5
  }
}

Get a Single User

Retrieve details for a specific user by ID.

GET /users/:id

Example Request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.example.com/v1/users/usr_abc123

Example Response

{
  "id": "usr_abc123",
  "name": "Jane Smith",
  "email": "jane@example.com",
  "role": "admin",
  "created_at": "2024-01-15T09:30:00Z",
  "last_login": "2024-03-10T18:45:00Z",
  "preferences": {
    "theme": "dark",
    "notifications": true,
    "language": "en"
  }
}

Create a User

Create a new user in your organization.

POST /users

Request Body

FieldTypeRequiredDescription
namestringYesThe user’s full name
emailstringYesA valid email address
rolestringNoUser role (admin, member, viewer). Defaults to member

Example Request

curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Alice Johnson", "email": "alice@example.com", "role": "member"}' \
  https://api.example.com/v1/users

Example Response

{
  "id": "usr_ghi789",
  "name": "Alice Johnson",
  "email": "alice@example.com",
  "role": "member",
  "created_at": "2024-03-13T10:00:00Z"
}

Products Endpoints

List All Products

Retrieve a paginated list of products.

GET /products

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number
limitinteger20Results per page (max 100)
categorystringFilter by product category
statusstring"active"Filter by status (active, archived, draft)

Example Response

{
  "data": [
    {
      "id": "prod_001",
      "name": "Documentation Theme",
      "category": "themes",
      "price": 49.00,
      "status": "active",
      "created_at": "2024-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 8,
    "total_pages": 1
  }
}

Get a Single Product

GET /products/:id

Returns the full product object including description, images, and metadata.

Create a Product

POST /products

Request Body

FieldTypeRequiredDescription
namestringYesProduct name
categorystringYesProduct category
pricenumberYesPrice in USD
descriptionstringNoProduct description
statusstringNoInitial status. Defaults to draft

Error Codes

All API errors return a consistent JSON structure:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "The email field is required.",
    "details": [
      {
        "field": "email",
        "message": "This field is required"
      }
    ]
  }
}

HTTP Status Codes

Status CodeMeaningDescription
200OKRequest succeeded
201CreatedResource was created successfully
400Bad RequestInvalid request body or parameters
401UnauthorizedMissing or invalid API key
403ForbiddenAPI key lacks required permissions
404Not FoundResource does not exist
409ConflictResource already exists (e.g., duplicate email)
422Unprocessable EntityRequest body failed validation
429Too Many RequestsRate limit exceeded
500Internal Server ErrorUnexpected server error

Error Codes

CodeHTTP StatusDescription
VALIDATION_ERROR400/422Request body failed validation
AUTHENTICATION_ERROR401Invalid or expired API key
PERMISSION_ERROR403Insufficient permissions
NOT_FOUND404Resource not found
DUPLICATE_ERROR409Resource already exists
RATE_LIMITED429Too many requests
INTERNAL_ERROR500Server error

Rate Limiting

API requests are rate-limited to prevent abuse:

PlanRate LimitBurst Limit
Free60 requests/minute10 requests/second
Pro600 requests/minute50 requests/second
Enterprise6000 requests/minute200 requests/second

Rate limit information is included in response headers:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1710324000
퍼널해커

중소기업을 위한 AI 마케팅&세일즈 자동화 시스템을 설계하고 구축합니다. 웹사이트, SEO, 콘텐츠, 리드 수집까지 한번에.

상호명: 퍼널해커 대표자: ___ 사업자등록번호: ___-__-_____ 통신판매업 신고번호: 제____-서울___-____호 주소: ___ 이메일: ___@funnelhacker.co.kr 호스팅 서비스 제공자: Netlify, Inc.

Copyright 2026 퍼널해커. All Rights Reserved