API Reference
Terms
- Profile - A profile is a generated set of fingerprints collected from real devices that is seen as a unique device by services. A profile stores information about the browser settings that have been set, and launches the browser.
- One time profile - A profile that is used only once and then deleted.
- Persistent profile - A profile that is saved and can be reused for multiple sessions.
- Session - A session is a browser instance that uses a profile. Session means started browser that is ready to use. Connection to the browser is done via WebSocket and can be used with automation tools like Playwright, Puppeteer, Selenium, etc. When using scraping API you don't need to start a session, just use profile to scrape page.
- Inactive browser - A browser that is not used for
inactive_kill_timeout
seconds and will be closed by the system. Default value is 30 seconds. - Proxy - A proxy is a server that acts as an intermediary between the client and the target server. Supported schemes are
HTTP
,HTTPS
,SOCKS5
,SSH
with or without auth that will be used by browser. Also you can useOpenVPN
to connect to the browser. Proxy is set implicitly when you start one-time profile or create a persistent profile.
Start one time profile browser
One-time profile browser doesn't save its state after stop. It's ideal for scraping and one-time tasks that don't require persistent state:
- Scraping data from websites that don't require authentication
- Short-term tasks that don't need to maintain state
Start
POST /profiles/one_time
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
Content-Type | Yes | string | Must be application/json |
Body Parameters
Name | Required | Type | Description |
---|---|---|---|
fingerprint | No | object | Customization options for the browser fingerprint |
proxy | No | string | Proxy URL (supports HTTP, HTTPS, SOCKS5, SSH) |
browser_settings | No | object | Browser configuration options |
Example Request
curl -X POST 'https://api-public.surfsky.io/profiles/one_time' \
-H 'accept: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"proxy": "socks5://username:[email protected]:1080"
}'
Response
Success (200 OK)
{
"internal_uuid": "a8fb62f90611456aa75422b01c385a62",
"ws_url": "wss://api-public.surfsky.io/proxy/a8fb62f90611456aa75422b01c385a62",
"inspector": {
"list": "https://api-public.surfsky.io/proxy/a8fb62f90611456aa75422b01c385a62/inspector",
"pages": [{
"page_title": "New Tab",
"page_url": "chrome://newtab/",
"devtools_url": "https://api-public.surfsky.io/proxy/a8fb62f90611456aa75422b01c385a62/inspector/devtools/..."
}]
},
"success": true
}
Error Responses
- 400 Bad Request: Invalid parameters or proxy configuration
- 401 Unauthorized: Invalid API token
- 429 Too Many Requests: Rate limit exceeded
After successful request you can use ws_url
to connect to the browser and use it for automation. All popular automation tools support WebSocket connections: Playwright, Puppeteer, chromedp, etc.
Persistent profiles
Persistent profiles are saved profiles that can be reused across multiple sessions. They maintain their state between runs, including cookies and browser settings. To stop profile you need to use stop
method or inactive_kill_timeout
will close it automatically.
It's ideal for long-term automation tasks that require persistent state:
- Scraping data from websites that require authentication
- Automating workflows that involve complex interactions
Maximum number of profiles is 100. Please contact us if you need more.
Create
Create a new persistent profile.
POST /profiles
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
Content-Type | Yes | string | Must be application/json |
Body Parameters
Name | Required | Type | Description |
---|---|---|---|
title | Yes | string | Profile name |
fingerprint | Yes | object | Profile fingerprint configuration |
proxy | No | string | Proxy URL string |
cookies | No | string/array | Cookies in JSON, Mozilla, or Netscape format |
Example Request
curl -X POST 'https://api-public.surfsky.io/profiles' \
-H 'accept: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"title": "My profile",
"fingerprint": {
"os": "win"
},
"proxy": "http://username:[email protected]:10002"
}'
Response
{
"success": true,
"msg": "Profile was created",
"data": {
"uuid": "02c57bf2d66d4c179cd958fb74c92bb1"
},
"code": null
}
Start
Start a persistent profile session.
POST /profiles/{uuid}/start
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
Content-Type | Yes | string | Must be application/json |
Example Request
curl -X POST 'https://api-public.surfsky.io/profiles/47be1a81ad7c4246affe1a1a79c2df80/start' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN'
Response
{
"internal_uuid": "a8fb62f90611456aa75422b01c385a62",
"ws_url": "wss://api-public.surfsky.io/proxy/...",
"inspector": {
"list": "https://api-public.surfsky.io/proxy/.../inspector",
"pages": [{
"page_title": "New Tab",
"page_url": "chrome://newtab/",
"devtools_url": "https://api-public.surfsky.io/proxy/.../inspector/devtools/..."
}]
}
}
internal_uuid
in response is a temporary uuid of the session that is used to identify the profile in the Surfsky system. It's not the same as the profile uuid
.
Stop
Stop a running persistent profile session.
POST /profiles/{uuid}/stop
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
Content-Type | Yes | string | Must be application/json |
Example Request
curl -X POST 'https://api-public.surfsky.io/profiles/47be1a81ad7c4246affe1a1a79c2df80/stop' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN'
Response
{
"success": true,
"msg": "Profile stopped",
"data": {
"uuid": "cf2d63d7269d48a6850a32c1c5fa8796"
}
}
uuid
is a internal_uuid
of the profile that get from start
method.
Get
Get profile info
GET /profiles/{uuid}
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
Content-Type | Yes | string | Must be application/json |
Parameters
Name | Required | Place | Type | Description |
---|---|---|---|---|
uuid | Yes | Path | string | Profile uuid |
Example Request
curl -X GET 'https://api-public.surfsky.io/profiles/cf2d63d7269d48a6850a32c1c5fa8796' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN'
Response
{
"success": true,
"data": {
"uuid": "cf2d63d7269d48a6850a32c1c5fa8796",
"title": "My profile",
"description": "",
"start_pages": [],
"pinned_tag": null,
"proxy": "http://username:[email protected]:10002",
"status": "stopped",
"storage_options": {
"cookies": true,
"passwords": true,
"extensions": true,
"localstorage": false,
"history": false,
"bookmarks": true,
"serviceworkers": false
},
"last_active": "2025-01-07T20:54:48",
"fingerprint": {
"os_arch": "x86",
"os_version": "11",
"os": "win",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"languages": null,
"timezone": null,
"geolocation": null,
"cpu": 4,
"ram": 8,
"renderer": "AMD Radeon(TM) 610M",
"noise": {
"webgl": false,
"canvas": false,
"audio": false,
"client_rects": false
},
"dns": null,
"media_devices": {
"video_in": 1,
"audio_out": 1,
"audio_in": 1
},
"screen": "1680x1050"
},
"has_user_password": false,
"password_set_at": null,
"created_at": "2025-01-07T20:52:08",
"updated_at": "2025-01-07T20:54:48"
},
"code": null
}
Update
Update persistent profile
Note that you can't update profile's os, os_arch and os_version fields
PATCH /profiles/{uuid}
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
accept | Yes | string | Must be application/json |
Content-Type | Yes | string | Must be application/json |
Path Parameters
Name | Required | Type | Description |
---|---|---|---|
uuid | Yes | string | Profile UUID to update |
Request Body Parameters
Name | Required | Type | Description |
---|---|---|---|
fingerprint | No | object | Profile fingerprint settings |
fingerprint.user_agent | No | string | Browser user agent string |
fingerprint.cpu | No | number | Number of CPU cores |
fingerprint.ram | No | number | Amount of RAM in GB |
fingerprint.renderer | No | string | Graphics card name. See get_renderers method for available renderers |
fingerprint.noise | No | object | Noise generation settings |
fingerprint.noise.webgl | No | boolean | Enable WebGL fingerprint noise |
fingerprint.noise.canvas | No | boolean | Enable Canvas fingerprint noise |
fingerprint.noise.audio | No | boolean | Enable Audio fingerprint noise |
fingerprint.noise.client_rects | No | boolean | Enable Client Rects fingerprint noise |
fingerprint.media_devices | No | object | Media devices configuration |
fingerprint.media_devices.video_in | No | number | Number of video input devices |
fingerprint.media_devices.audio_out | No | number | Number of audio output devices |
fingerprint.media_devices.audio_in | No | number | Number of audio input devices |
fingerprint.screen | No | string | Screen resolution (format: "WIDTHxHEIGHT"). See get_screens method for available resolutions |
fingerprint.languages | No | array | List of browser languages |
fingerprint.timezone | No | string | Browser timezone |
fingerprint.geolocation | No | object | Browser geolocation settings |
fingerprint.geolocation.latitude | No | number | Latitude coordinate |
fingerprint.geolocation.longitude | No | number | Longitude coordinate |
fingerprint.geolocation.accuracy | No | number | Location accuracy in meters |
fingerprint.dns | No | string | DNS server address |
Example Request
curl -X PATCH 'https://api-public.surfsky.io/profiles/cf2d63d7269d48a6850a32c1c5fa8796' \
-H 'accept: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"fingerprint": {
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",
"cpu": 8,
"ram": 16,
"renderer": "Intel(R) Iris(TM) Plus Graphics 650",
"noise": {"webgl": false, "canvas": true, "audio": true, "client_rects": true},
"media_devices": {"video_in": 1, "audio_out": 1, "audio_in": 1},
"screen": "1440x900",
"languages": [
"[ga-IE] Irish (Ireland)",
"[gl-ES] Galician (Spain)"
],
"timezone": "Europe/Paris",
"geolocation": {"latitude": 60, "longitude": 60, "accuracy": 10},
"dns": "8.8.8.8"
}
}'
Response
{
"success": true,
"data": {
"uuid": "cf2d63d7269d48a6850a32c1c5fa8796",
"title": "My profile",
"description": "",
"start_pages": [],
"pinned_tag": null,
"proxy": "socks5://username:[email protected]:10000",
"status": "stopped",
"storage_options": {
"cookies": true,
"passwords": true,
"extensions": true,
"localstorage": false,
"history": false,
"bookmarks": true,
"serviceworkers": false
},
"last_active": "2025-01-07T20:54:48",
"fingerprint": {
"os_arch": "x86",
"os_version": "11",
"os": "win",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36",
"languages": ["[ga-IE] Irish (Ireland)","[gl-ES] Galician (Spain)"],
"timezone": "Europe/Paris",
"geolocation": {"latitude": 60.0, "longitude": 60.0, "accuracy": 10},
"cpu": 8,
"ram": 16,
"renderer": "Intel(R) Iris(TM) Plus Graphics 650",
"noise": {"webgl": false, "canvas": true, "audio": true, "client_rects": true},
"dns": "8.8.8.8",
"media_devices": {"video_in": 1, "audio_out": 1, "audio_in": 1},
"screen": "1440x900"
},
"has_user_password": false,
"password_set_at": null,
"created_at": "2025-01-07T20:52:08",
"updated_at": "2025-01-07T20:54:48"
},
"code": null
}
Error Responses
- 400 Bad Request: Invalid parameters
- 401 Unauthorized: Invalid API token
- 404 Not Found: Profile not found
- 429 Too Many Requests: Rate limit exceeded
Delete
Delete a persistent profile by uuid
.
DELETE /profiles/{uuid}
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
accept | Yes | string | Must be application/json |
Content-Type | Yes | string | Must be application/json |
Path Parameters
Name | Required | Type | Description |
---|---|---|---|
uuid | Yes | string | UUID of the profile to delete |
Example Request
curl -X DELETE 'https://api-public.surfsky.io/profiles/cf2d63d7269d48a6850a32c1c5fa8796' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN'
Response
Success Response (200 OK)
{
"success": true,
"msg": "Profile was deleted",
"data": {
"uuid": "cf2d63d7269d48a6850a32c1c5fa8796"
}
}
Error Responses
- 401 Unauthorized: Invalid API token
- 404 Not Found: Profile not found
- 429 Too Many Requests: Rate limit exceeded
Deleting a profile is permanent and cannot be undone. Make sure to back up any important profile data before deletion.
Delete Batch
Delete multiple profiles in a single request.
DELETE /profiles
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
accept | Yes | string | Must be application/json |
Content-Type | Yes | string | Must be application/json |
Request Body Parameters
Name | Required | Type | Description |
---|---|---|---|
uuids | Yes | array | List of profile UUIDs to delete |
Example Request
curl -X DELETE 'https://api-public.surfsky.io/profiles' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN' \
-d '{
"uuids": ["61107eadb77941d39ab867098c2f6542"]
}'
Response
Success Response (200 OK)
{
"success": true,
"msg": "Profiles were deleted",
"data": {
"deleted_uuids": ["61107eadb77941d39ab867098c2f6542"],
"active_uuids": [],
"not_found_uuids": []
}
}
Partial Success Response (200 OK)
{
"success": false,
"msg": "Some profiles were not deleted",
"data": {
"deleted_uuids": [],
"active_uuids": [],
"not_found_uuids": [
"cf2d63d7269d48a6850a32c1c5fa8796",
"effbe126819e470da332e521f1b9df9d"
]
}
}
Error Responses
- 400 Bad Request: Invalid request body
- 401 Unauthorized: Invalid API token
- 429 Too Many Requests: Rate limit exceeded
- This operation is permanent and cannot be undone
- Profiles that are currently active cannot be deleted
- The operation will attempt to delete all provided profiles and return the status for each
List
Get list of persistent profiles.
GET /profiles
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
accept | Yes | string | Must be application/json |
Content-Type | Yes | string | Must be application/json |
Query Parameters
Name | Required | Type | Default | Description |
---|---|---|---|---|
page | No | integer | 0 | Page number for pagination |
page_len | No | integer | 100 | Number of profiles per page |
ordering | No | string | 'active' | Sort order for results. Options: 'created', '-created', 'active', '-active', 'title', '-title' (prefix '-' means reverse order) |
Example Request
curl -X GET 'https://api-public.surfsky.io/profiles?page=1&page_len=10' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN'
Example Response
[
{
"uuid": "02c57bf2d66d4c179cd958fb74c92bb1",
"title": "My profile",
"description": "",
"proxy": "socks5://username:[email protected]:1080",
"status": "stopped"
},
{
"uuid": "2b73cd78a7c54965a5ac5738803b6a5f",
"title": "Test account",
"description": "",
"proxy": "socks5://username:[email protected]:1080",
"status": "started"
}
// ... more profiles
]
Error Responses
- 400 Bad Request: Invalid request body
- 401 Unauthorized: Invalid API token
- 429 Too Many Requests: Rate limit exceeded
- Maximum page size is 100 profiles
- Use pagination for efficient data retrieval when you have many profiles
- The ordering parameter can help you sort profiles based on different criteria
Active
Get list of currently running profiles.
GET /profiles/active
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
accept | Yes | string | Must be application/json |
Content-Type | Yes | string | Must be application/json |
Example Request
curl -X GET 'https://api-public.surfsky.io/profiles/active' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN'
Example Response
{
"success": true,
"msg": "",
"data": [
{
"profile_uuid": "8698fcea8f3644718b11b2be92b1819c",
"internal_uuid": "5c417784972f4c0b9db30e586be79013",
"one_time": false
}
]
}
Error Responses
- 401 Unauthorized: Invalid API token
- 429 Too Many Requests: Rate limit exceeded
internal_uuid
is a temporary identifier used for the current browser sessionprofile_uuid
is the permanent identifier of the profile- One-time profiles will have
one_time: true
and no associatedprofile_uuid
Export cookies
Export profile cookies in specified format.
GET /profiles/{uuid}/cookies
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
Content-Type | Yes | string | Must be application/json |
Query Parameters
Name | Required | Type | Default | Description |
---|---|---|---|---|
export_format | No | string | json | Format to export cookies: json or netscape |
Example Request
curl -X GET 'https://api-public.surfsky.io/profiles/8698fcea8f3644718b11b2be92b1819c/cookies?export_format=json' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN'
Example Response
{
"success": true,
"msg": "Cookies were exported",
"data": {
"cookies": [
{
"domain": ".google.com",
"expirationDate": 1770471524.076367,
"hostOnly": false,
"httpOnly": true,
"name": "__Secure-ENID",
"path": "/",
"sameSite": "lax",
"secure": true,
"value": ""
}
]
}
}
Import cookies
Import cookies to a profile.
POST /profiles/{uuid}/cookies
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
Content-Type | Yes | string | Must be application/json |
Request Body Parameters
Name | Required | Type | Description |
---|---|---|---|
cookies | Yes | string | Cookies in JSON, Netscape, or Mozilla format |
Example Request
curl -X POST 'https://api-public.surfsky.io/profiles/8698fcea8f3644718b11b2be92b1819c/cookies' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN' \
-d '{
"cookies": "[{
\"domain\": \".google.com\",
\"expirationDate\": 1639134293.313654,
\"hostOnly\": false,
\"httpOnly\": false,
\"name\": \"1P_JAR\",
\"path\": \"/\",
\"sameSite\": \"no_restriction\",
\"secure\": true,
\"value\": \"2021-11-10-11\"
}]"
}'
Example Response
{
"success": true,
"msg": "Cookies were imported"
}
Error Responses
- 400 Bad Request: Invalid cookie format
- 401 Unauthorized: Invalid API token
- 404 Not Found: Profile not found
- 429 Too Many Requests: Rate limit exceeded
- Cookies can be exported in either JSON or Netscape format
- When importing, the API accepts cookies in JSON, Netscape, or Mozilla format
- Make sure to properly escape quotes in the JSON cookie string
Fingerprint
Methods for retrieving available fingerprint options.
Get Renderers
Get list of available GPU renderers for specified OS and architecture.
GET /fingerprint/renderers
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
Content-Type | Yes | string | Must be application/json |
Query Parameters
Name | Required | Type | Description |
---|---|---|---|
os | Yes | string | Operating system (win or mac ) |
os_arch | Yes | string | CPU architecture (x86 or arm ) |
Example Request
curl -X GET 'https://api-public.surfsky.io/fingerprint/renderers?os=win&os_arch=x86' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN'
Example Response
{
"success": true,
"msg": "",
"data": [
{
"value": "NVIDIA GeForce MX450",
"platform": "win",
"archs": ["x86"]
},
{
"value": "AMD Radeon RX 640",
"platform": "win",
"archs": ["x86"]
}
// ... more renderers
],
"total_count": 356,
"page": 0
}
Get Screens
Get list of available screen resolutions for specified OS and architecture.
GET /fingerprint/screens
Headers
Name | Required | Type | Description |
---|---|---|---|
X-Cloud-Api-Token | Yes | string | Your API authentication token |
Content-Type | Yes | string | Must be application/json |
Query Parameters
Name | Required | Type | Description |
---|---|---|---|
os | Yes | string | Operating system (win or mac ) |
os_arch | Yes | string | CPU architecture (x86 or arm ) |
Example Request
curl -X GET 'https://api-public.surfsky.io/fingerprint/screens?os=win&os_arch=x86' \
-H 'Content-Type: application/json' \
-H 'x-cloud-api-token: YOUR_API_TOKEN'
Example Response
{
"success": true,
"msg": "",
"data": [
{
"value": "1280x800",
"platform": "win",
"archs": ["x86"]
},
{
"value": "1440x900",
"platform": "win",
"archs": ["x86"]
}
// ... more resolutions
]
}
Error Responses
- 400 Bad Request: Invalid OS or architecture
- 401 Unauthorized: Invalid API token
- 429 Too Many Requests: Rate limit exceeded
Available options:
- Operating Systems:
win
,mac
- CPU Architectures:
x86
,arm
CAPTCHA Solving
Surfsky provides automatic CAPTCHA solving capabilities that can be enabled when starting a profile. This feature supports major CAPTCHA types including reCAPTCHA v2/v3/Enterprise, hCaptcha, DataDome and others.
Enable CAPTCHA Solving
To enable CAPTCHA solving, include the anti_captcha
parameter when starting a profile:
One-Time Profile Example
curl -X POST 'https://api-public.surfsky.io/profiles/one_time' \
-H 'Content-Type: application/json' \
-H 'X-Cloud-Api-Token: YOUR_API_TOKEN' \
-d '{
"browser_settings": {
"inactive_kill_timeout": 300
},
"proxy": "socks5://username:[email protected]:1080",
"anti_captcha": {
"enabled": true
}
}'
Parameters
Name | Required | Type | Description |
---|---|---|---|
anti_captcha.enabled | No | boolean | Enable automatic CAPTCHA solving |
- CAPTCHA solving is available for both one-time and persistent profiles
- The service automatically detects and solves CAPTCHAs when they appear
- CAPTCHA solving may add additional time to requests while solutions are processed
- Most CAPTCHAs are solved using integration with external solving services. In specific cases where needed, we develop custom solvers for unique CAPTCHA implementations
- For certain implementations, you may need to subscribe to event statuses using JavaScript code. Please contact our team for detailed implementation guidance
Error Responses
This section describes common error responses that can be returned by the API endpoints.
No Subscription Error
Returned when trying to perform an action without an active subscription.
{
"success": false,
"msg": "No subscription",
"data": null
}
Rate Limit Error (429 Too Many Requests)
Returned when you've exceeded the API rate limits.
{
"success": false,
"msg": "Too many requests",
"data": null
}
Authentication Error (401 Unauthorized)
Returned when using an invalid or expired API token.
{
"success": false,
"msg": "Invalid API token",
"data": null
}
Not Found Error (404)
Returned when requesting a resource that doesn't exist.
{
"success": false,
"msg": "Profile not found",
"data": null
}
Invalid Parameters Error (400 Bad Request)
Returned when the request contains invalid parameters.
{
"success": false,
"msg": "Invalid parameters",
"data": {
"errors": ["Invalid proxy format"]
}
}
Profile Active Error
Returned when trying to perform an operation on an active profile that requires it to be stopped.
{
"success": false,
"msg": "Profile is active",
"data": null
}
- All error responses follow the same structure with
success
,msg
, anddata
fields - The
msg
field contains a human-readable description of the error - The
data
field may contain additional error details when available