{"templateId":"openapi_docs","sharedDataIds":{"openAPIDocsStore":"oas-index.yaml","sidebar":"sidebar-sidebar.yaml__"},"props":{"definitionId":"index.yaml","dynamicMarkdocComponents":[],"baseSlug":"/","seo":{"title":"Slimlink External API"},"itemId":"","disableAutoScroll":true,"metadata":{"type":"openapi","title":"Slimlink External API","description":"# Introduction\n\nSlimlink External API provides publicly available endpoints for external integrations. Use this API to create and manage short links, retrieve analytics, and manage domains programmatically.\n\n## Authentication\n\nAll API requests require authentication using an API key. Include your API key in the `X-API-Key` header with every request:\n\n```\nX-API-Key: your_api_key_here\n```\n\n**How to obtain an API key:**\n1. Contact your KAM or Support team\n2. Check your email for api key\n\n\n> **Note:** API is avaible only for our enterprise level customers\n\n## Error Responses\n\nThe API uses standard HTTP status codes to indicate success or failure:\n\n| Status Code | Error Code | Description |\n|-------------|------------|-------------|\n| `200` | — | Success - Request completed successfully |\n| `400` | `1001` | Bad Request - Invalid request parameters |\n| `401` | `1003` | Unauthorized - Invalid or missing API key |\n| `403` | `1005` | Forbidden - Access denied to the requested resource |\n| `404` | `1002` | Not Found - Resource does not exist |\n| `409` | `1006` | Conflict - Resource already exists |\n| `422` | `50700` | Validation Error - Request body validation failed |\n| `429` | `50900` | Too Many Requests - Rate limit exceeded |\n| `500` | `1004` | Internal Server Error - Server-side error |\n\n**Error Response Format:**\n```json\n{\n  \"message\": \"Error description\",\n  \"error_code\": 1001,\n  \"data\": {}\n}\n\n```\n\n## Rate Limits\n\nRate limits are **tariff-based** and apply to the bulk upload endpoint (`/v1/links/bulk`). Limits vary depending on your subscription plan.\n\n| Metric | Description |\n|--------|-------------|\n| Per Second | Maximum requests allowed per second (tariff-dependent) |\n| Per Minute | Maximum requests allowed per minute (tariff-dependent) |\n\nWhen you exceed the rate limit, you will receive a `429 Too Many Requests` response with error code `50900`. The response headers include:\n\n| Header | Description |\n|--------|-------------|\n| `X-RateLimit-Limit-Second` | Maximum requests allowed per second |\n| `X-RateLimit-Remaining-Second` | Remaining requests in current second window |\n| `X-RateLimit-Limit-Minute` | Maximum requests allowed per minute |\n| `X-RateLimit-Remaining-Minute` | Remaining requests in current minute window |\n\n> **Note:** Contact support or upgrade your plan to increase rate limits.\n\n## Pagination\n\n    List endpoints support pagination using the following parameters:\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `page` | integer | `1` | Page number (1-indexed) |\n| `itemsPerPage` | integer | `30` | Number of items per page |\n\n**Paginated Response Format:**\n```json\n{\n  \"message\": \"Request successful\",\n  \"error_code\": null,\n  \"data\": {\n    \"items\": [...],\n    \"total\": 150\n  }\n}\n```\n\nUse the `total` field to calculate the total number of pages: `total_pages = ceil(total / itemsPerPage)`\n"},"compilationErrors":[],"markdown":{"partials":{},"variables":{"rbac":{"teams":["anonymous"]},"user":{},"remoteAddr":{"hostname":"docs.cut0.com","port":4000,"ipAddress":"216.73.216.163"},"lang":"default_locale","env":{"PUBLIC_REDOCLY_BRANCH_NAME":"main"}}},"pagePropGetterError":{"message":"","name":""}},"slug":"/","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}