API Reference

Base URL: http://localhost/AutoPromote/api/v1

Authentication

POST /auth/login Public
Authenticate user and receive access token

Request Body

Parameter Type Required Description
email string Yes User email address
password string Yes User password
{
  "email": "user@example.com",
  "password": "securepassword"
}

Response

{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 1,
    "name": "John Doe",
    "email": "user@example.com",
    "role": "user"
  }
}

Campaigns

GET /campaigns Auth Required
Get all campaigns for authenticated user

Query Parameters

Parameter Type Required Description
page integer No Page number (default: 1)
limit integer No Items per page (default: 10)
status string No Filter by status (active, paused, completed)
POST /campaigns Auth Required
Create a new campaign
{
  "name": "Summer Sale Campaign",
  "product_id": 123,
  "budget": 1000,
  "start_date": "2024-06-01",
  "end_date": "2024-08-31",
  "target_audience": ["25-34", "interests:fitness"],
  "channels": ["facebook", "google", "email"]
}
PUT /campaigns/{id} Auth Required
Update campaign details
DELETE /campaigns/{id} Auth Required
Delete a campaign

Analytics

GET /analytics/dashboard Auth Required
Get dashboard analytics data

Response

{
  "overview": {
    "total_campaigns": 15,
    "active_campaigns": 8,
    "total_revenue": 45678.90,
    "total_clicks": 12345,
    "conversion_rate": 3.45
  },
  "performance": {
    "daily": [...],
    "weekly": [...],
    "monthly": [...]
  },
  "top_campaigns": [...],
  "traffic_sources": [...]
}
GET /analytics/campaigns/{id} Auth Required
Get detailed analytics for a specific campaign

Products

GET /products/search Auth Required
Search for affiliate products

Query Parameters

Parameter Type Required Description
q string Yes Search query
category string No Product category
min_price float No Minimum price
max_price float No Maximum price
network string No Affiliate network (amazon, clickbank, etc)

Webhooks

POST /webhooks Auth Required
Register a new webhook endpoint
{
  "url": "https://your-app.com/webhook",
  "events": ["campaign.created", "campaign.completed", "conversion.tracked"],
  "headers": {
    "X-Custom-Header": "value"
  }
}

Response

{
  "success": true,
  "webhook_id": "whk_abc123",
  "secret": "whsec_xyz789",
  "status": "active"
}

Rate Limiting

The API enforces rate limiting to ensure fair usage:

  • 100 requests per minute for authenticated users
  • 20 requests per minute for unauthenticated requests
  • Rate limit information is included in response headers
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1623456789

Error Responses

All error responses follow a consistent format:

{
  "success": false,
  "error": {
    "code": "INVALID_REQUEST",
    "message": "The request parameters are invalid",
    "details": {
      "field": "email",
      "reason": "Invalid email format"
    }
  }
}

Common Error Codes

Code HTTP Status Description
UNAUTHORIZED 401 Authentication required
FORBIDDEN 403 Access denied
NOT_FOUND 404 Resource not found
RATE_LIMITED 429 Too many requests
SERVER_ERROR 500 Internal server error