Support Station Help Center

Integrations

API Access

The Support Station API lets you integrate support functionality into your applications. Create tickets, manage customers, fetch data, and automate workflows programmatically.

Plan Requirements

API access is available on Standard plans and above.

Plan API Access
Free
Starter
Standard
Pro
Enterprise

Getting Started

Step 1: Generate an API Key

  1. Go to Settings > API Keys
  2. Click Create API Key
  3. Name your key (e.g., "CRM Integration")
  4. Select scopes (permissions)
  5. Copy and securely store the key

Important: The key is only shown once. Store it securely.

Step 2: Make Your First Request

curl -X GET "https://api.supportstation.io/v1/tickets"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"

Step 3: Explore the API

Browse available endpoints in our API documentation at docs.supportstation.io/api.

Authentication

All API requests require authentication via API key.

Header Authentication

Include your API key in the Authorization header:

Authorization: Bearer sk_live_abc123...

Key Types

Prefix Environment
sk_live_ Production
sk_test_ Testing (if available)

API Endpoints

Tickets

List Tickets

GET /v1/tickets

Query parameters:

  • status - Filter by status
  • assignee - Filter by assignee ID
  • limit - Results per page (max 100)
  • offset - Pagination offset

Get Ticket

GET /v1/tickets/:id

Create Ticket

POST /v1/tickets

Body:

{
  "customer_email": "john@example.com",
  "subject": "Need help with billing",
  "description": "I was charged twice this month...",
  "priority": "high",
  "tags": ["billing"]
}

Update Ticket

PATCH /v1/tickets/:id

Body:

{
  "status": "resolved",
  "assignee_id": "usr_abc123"
}

Messages

List Messages

GET /v1/tickets/:id/messages

Add Message

POST /v1/tickets/:id/messages

Body:

{
  "content": "Thanks for reaching out. Let me look into this.",
  "internal": false
}

Set internal: true for internal notes.

Customers

List Customers

GET /v1/customers

Get Customer

GET /v1/customers/:id

Create Customer

POST /v1/customers

Body:

{
  "email": "jane@example.com",
  "name": "Jane Smith",
  "metadata": {
    "plan": "enterprise",
    "company": "Acme Inc"
  }
}

Update Customer

PATCH /v1/customers/:id

API Scopes

When creating API keys, select appropriate scopes:

Scope Permissions
TICKETS_READ View tickets
TICKETS_WRITE Create/update tickets and messages

Note: Scopes are defined in UPPERCASE format. Additional scopes may be available - check the API key creation interface for the full list.

Use minimum required scopes for security.

Error Handling

Error Response Format

{
  "error": "invalid_request",
  "message": "Customer email is required",
  "details": {
    "field": "customer_email"
  }
}

Common Error Codes

Code Status Meaning
authentication_failed 401 Invalid or missing API key
forbidden 403 Key lacks required scope
not_found 404 Resource doesn't exist
validation_error 400 Invalid request data
internal_error 500 Server error (retry)

Pagination

List endpoints support pagination:

GET /v1/tickets?limit=25&offset=50

Response includes pagination info:

{
  "data": [...],
  "pagination": {
    "limit": 25,
    "offset": 50,
    "total": 150,
    "has_more": true
  }
}

Webhooks + API

Combine webhooks with API for powerful integrations:

  1. Webhook notifies your system of new ticket
  2. API call fetches full ticket details
  3. Your logic processes and responds
  4. API call updates ticket or adds message

Webhooks can be configured in Settings > Webhooks to notify your systems of Support Station events.

Code Examples

Node.js

const axios = require('axios');

const client = axios.create({
  baseURL: 'https://api.supportstation.io/v1',
  headers: {
    'Authorization': `Bearer ${process.env.SS_API_KEY}`,
    'Content-Type': 'application/json'
  }
});

// Create a ticket
async function createTicket(email, subject, description) {
  const response = await client.post('/tickets', {
    customer_email: email,
    subject,
    description
  });
  return response.data;
}

// Add a message
async function addMessage(ticketId, content) {
  const response = await client.post(`/tickets/${ticketId}/messages`, {
    content,
    internal: false
  });
  return response.data;
}

Python

import requests

class SupportStation:
    def __init__(self, api_key):
        self.base_url = 'https://api.supportstation.io/v1'
        self.headers = {
            'Authorization': f'Bearer {api_key}',
            'Content-Type': 'application/json'
        }

    def create_ticket(self, email, subject, description):
        response = requests.post(
            f'{self.base_url}/tickets',
            headers=self.headers,
            json={
                'customer_email': email,
                'subject': subject,
                'description': description
            }
        )
        return response.json()

    def get_tickets(self, status=None):
        params = {}
        if status:
            params['status'] = status
        response = requests.get(
            f'{self.base_url}/tickets',
            headers=self.headers,
            params=params
        )
        return response.json()

Best Practices

Secure Your Keys

  • Never commit keys to version control
  • Use environment variables
  • Rotate keys periodically
  • Use minimal scopes

Handle Errors Gracefully

  • Implement retries for 5xx errors
  • Log errors for debugging
  • Validate requests before sending

Cache When Possible

  • Cache customer data locally
  • Avoid redundant API calls
  • Respect rate limits

Use Idempotency

  • Check for existing resources before creating
  • Use unique identifiers
  • Handle duplicate requests gracefully
By Bryce·Published 7/15/2026·Updated 7/15/2026

Was this article helpful?

API Access - Support Station Help Center