Skip to main content

API Keys

Learn how to generate, manage, and use API keys for SoshiaConnect API access.

What are API Keys?

API keys are authentication credentials that allow your applications to access the SoshiaConnect API without requiring user login. They're ideal for:

  • Server-to-server communication
  • Automated processes
  • Third-party integrations
  • Background jobs
  • Scheduled tasks

API Keys vs Bearer Tokens

FeatureAPI KeysBearer Tokens
Use CaseServer-side applicationsUser-authenticated requests
LifespanPermanent (until revoked)Expires after 24 hours
RefreshNot requiredUse /auth/refresh
Best ForAutomation, integrationsWeb/mobile apps
SecurityStore in environment variablesCan be stored in memory

Creating API Keys

Via Portal

  1. Log in to SoshiaConnect Portal
  2. Navigate to API Keys section
  3. Click Generate New API Key
  4. Enter:
    • API Key Name: Descriptive name (e.g., "Production Server")
    • Username: Associated username for tracking
  5. Click Generate
  6. Copy and save the API key immediately - you won't see it again!

Via API

POST /api-keys/generate
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{
"api_key_name": "Production API Key",
"user": "api_user_prod"
}

Response:

{
"id": 1,
"api_key_name": "Production API Key",
"api_key": "sk_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ123456",
"user": "api_user_prod",
"status": "active",
"created_at": "2025-01-15T10:30:00Z"
}

Using API Keys

Header Format

GET /api-routes-data?id=123 HTTP/1.1
Host: api.soshiaconnect.com
X-API-Key: your_api_key_here
X-Username: your_username

Code Examples

JavaScript:

const axios = require('axios');

const config = {
headers: {
'X-API-Key': process.env.SOSHIA_API_KEY,
'X-Username': process.env.SOSHIA_USERNAME
}
};

axios.get('https://api.soshiaconnect.com/api/api-routes-data?id=123', config)
.then(response => console.log(response.data))
.catch(error => console.error(error));

Python:

import requests
import os

headers = {
'X-API-Key': os.getenv('SOSHIA_API_KEY'),
'X-Username': os.getenv('SOSHIA_USERNAME')
}

response = requests.get(
'https://api.soshiaconnect.com/api/api-routes-data',
params={'id': 123},
headers=headers
)
print(response.json())

PHP:

<?php
$apiKey = getenv('SOSHIA_API_KEY');
$username = getenv('SOSHIA_USERNAME');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.soshiaconnect.com/api/api-routes-data?id=123');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-API-Key: $apiKey",
"X-Username: $username"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

Managing API Keys

Listing All Keys

Via Portal: Navigate to API Keys section to see all your keys

Via API:

GET /api-keys
Authorization: Bearer YOUR_TOKEN

Viewing Key Details

GET /api-keys/{api_key_id}
Authorization: Bearer YOUR_TOKEN

Activating/Deactivating Keys

PUT /api-keys/{api_key_id}/status
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{
"status": "inactive" // or "active"
}

Deleting Keys

DELETE /api-keys/{api_key_id}
Authorization: Bearer YOUR_TOKEN

⚠️ Warning: Deletion is permanent and will immediately revoke access for applications using this key.

Exporting Keys List

GET /api-keys/export
Authorization: Bearer YOUR_TOKEN

Returns CSV file with all your API keys (except the key values themselves).

Security Best Practices

1. Storage

Do:

  • Store in environment variables
  • Use secret management systems (AWS Secrets Manager, HashiCorp Vault)
  • Encrypt in databases
  • Use key management services

Don't:

  • Hard-code in source code
  • Commit to version control
  • Share via email or chat
  • Store in client-side code
  • Log API keys

2. Key Rotation

Recommended Schedule:

Development: Every 30 days
Staging: Every 60 days
Production: Every 90 days

Rotation Process:

  1. Generate new key
  2. Update applications with new key
  3. Test thoroughly
  4. Deactivate old key
  5. Monitor for errors
  6. Delete old key after grace period

3. Naming Conventions

Use descriptive names that include:

  • Environment (prod/staging/dev)
  • Application name
  • Purpose
  • Creation date

Examples:

  • prod-api-server-main-2025-01
  • staging-integration-test-2025-01
  • dev-local-machine-john-2025-01

4. Access Control

  • Create separate keys per application
  • Use different keys for different environments
  • Limit key permissions (if available)
  • Monitor key usage regularly
  • Revoke keys immediately if compromised

5. Monitoring

Track API key usage:

GET /api-usage-logs
Authorization: Bearer YOUR_TOKEN

Monitor for:

  • Unusual traffic patterns
  • Failed authentication attempts
  • Unexpected IP addresses
  • Off-hours access
  • Spike in API calls

Troubleshooting

Common Issues

401 Unauthorized

{
"success": false,
"message": "Invalid or missing authentication"
}

Solutions:

  • Verify key is correct
  • Check key is active
  • Ensure proper header format
  • Verify username matches

403 Forbidden

{
"success": false,
"message": "Insufficient permissions"
}

Solutions:

  • Check subscription is active
  • Verify access to requested route
  • Ensure account in good standing

Key Not Working After Creation

  • Allow 1-2 minutes for propagation
  • Clear any caches
  • Verify you copied the complete key
  • Check for leading/trailing spaces

API Key Limits

PlanMax API KeysRate LimitStorage
Free260/hour30 days
Professional105,000/hour90 days
EnterpriseUnlimitedCustomUnlimited

FAQs

Q: Can I recover a deleted API key? A: No, deletion is permanent. You must generate a new key.

Q: Can I see my API key after creation? A: No, for security reasons it's only shown once. Generate a new one if lost.

Q: Do API keys expire? A: No, they remain valid until you revoke them. However, regular rotation is recommended.

Q: Can I use the same key across multiple applications? A: While possible, it's not recommended. Use separate keys for better security and tracking.

Q: What happens if my key is compromised? A: Immediately deactivate or delete it via the portal, then generate a new one.

Q: Can I limit what an API key can access? A: Currently, API keys have full account access. Granular permissions may be available in future updates.