# Surfly REST API Reference API

> Surfly REST API Reference API on Apizie: 32 endpoints (List, Create, Get by id, Update, …) returned as clean JSON through one API key. Send your own provider key in the x-upstream-key header. Call it over REST at https://apizie.tech/v1/open-data:surfly/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `open-data:surfly`
- Category: Open Data
- Status: byok
- Source: https://www.surfly.com
- Page: https://apizie.tech/api/open-data/surfly
- OpenAPI: https://apizie.tech/api/open-data/surfly/openapi.json

By using the REST API, you can integrate our Co-browsing technology into your own application or build a thin layer around our technology. You can completely customize Surfly and automate the management of client and…

## Endpoints

### List
`GET https://apizie.tech/v1/open-data:surfly/agents-get-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| free | boolean | no | Agents that are ready to take a call. Depends on `available` field value and online status. |
| API_KEY | string | yes | Path parameter {API_KEY} |

### Create
`POST https://apizie.tech/v1/open-data:surfly/agents-register-new-agent` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| API_KEY | string | yes | Path parameter {API_KEY} |
| body | object | yes | JSON request body |

### Get by id
`GET https://apizie.tech/v1/open-data:surfly/agents-get-by-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| API_KEY | string | yes |  |
| AGENT_ID | string | yes |  |

### Update
`POST https://apizie.tech/v1/open-data:surfly/agents-update-agent` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| AGENT_ID | string | yes | Id of the agent to update |
| API_KEY | string | yes | Path parameter {API_KEY} |
| body | object | yes | JSON request body |

### Delete
`POST https://apizie.tech/v1/open-data:surfly/agents-remove-agent` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| AGENT_ID | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |

### Generate an access token
`POST https://apizie.tech/v1/open-data:surfly/agents-generate-access-token` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| API_KEY | string | yes | Path parameter {API_KEY} |
| body | object | yes | JSON request body |

### List
`GET https://apizie.tech/v1/open-data:surfly/sessions-get-all` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| API_KEY | string | yes | Path parameter {API_KEY} |

### Create
`POST https://apizie.tech/v1/open-data:surfly/sessions-generate-new-session` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| API_KEY | string | yes | Path parameter {API_KEY} |
| body | object | yes | JSON request body |

### Filter
`GET https://apizie.tech/v1/open-data:surfly/sessions-filter` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| active_session | boolean | yes | Filter active or inactive sessions |
| agent_id | number | yes | Filter by ID of the agent who joined/started a session |
| year | number | yes | Filter by year |
| month | number | yes | Filter by month |
| pin | number | yes | Filter by PIN number (useful in combination with `active_session`) |
| tags | string | yes | Filter by tag. Supports multiple comma separated tags at once |
| api_key | string | yes | Path parameter {api_key} |

### Get by id
`GET https://apizie.tech/v1/open-data:surfly/sessions-get-by-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| ID | string | yes | Id of the session. Can be a formatted ID (e.g. 123-123-123), or an unformatted ID (e.g. fuSHr0sRQ1usugvheahwQ) |
| API_KEY | string | yes | Path parameter {API_KEY} |

### End
`POST https://apizie.tech/v1/open-data:surfly/sessions-end-by-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| ID | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |

### Get default options
`GET https://apizie.tech/v1/open-data:surfly/company-get-default-options` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | yes | Path parameter {api_key} |

### Post options
`POST https://apizie.tech/v1/open-data:surfly/company-post-options` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | yes | Path parameter {api_key} |

### Update default options
`POST https://apizie.tech/v1/open-data:surfly/company-update-default-options` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | yes | Path parameter {api_key} |

### Reset default options
`POST https://apizie.tech/v1/open-data:surfly/company-reset-default-options` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | yes | Path parameter {api_key} |

### Latest Screenshot
`GET https://apizie.tech/v1/open-data:surfly/screenshots-get-latest` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| ID | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |

### Create Screenshot
`POST https://apizie.tech/v1/open-data:surfly/screenshots-start-generation` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| ID | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |
| body | object | yes | JSON request body |

### List
`GET https://apizie.tech/v1/open-data:surfly/clients-get-all` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| API_KEY | string | yes | Path parameter {API_KEY} |

### Create
`POST https://apizie.tech/v1/open-data:surfly/clients-add-new-client` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| API_KEY | string | yes | Path parameter {API_KEY} |
| body | object | yes | JSON request body |

### Get by Id
`GET https://apizie.tech/v1/open-data:surfly/clients-info-by-id` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| CLIENT_KEY | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |

### Set Client Domain List
`POST https://apizie.tech/v1/open-data:surfly/clients-set-domain-list` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| CLIENT_KEY | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |
| body | object | yes | JSON request body |

### Update
`POST https://apizie.tech/v1/open-data:surfly/clients-update-client` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| CLIENT_KEY | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |
| body | object | yes | JSON request body |

### Delete
`POST https://apizie.tech/v1/open-data:surfly/clients-delete-client` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| CLIENT_KEY | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |

### List Active Sessions for Reseller's Client
`GET https://apizie.tech/v1/open-data:surfly/clients-list-active-sessions-for-reseller-client` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| CLIENT_KEY | string | yes |  |
| active_session | boolean | no |  |
| year | integer | no |  |
| month | integer | no |  |
| API_KEY | string | yes | Path parameter {API_KEY} |

### List
`GET https://apizie.tech/v1/open-data:surfly/history-get-all-sessions` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| API_KEY | string | yes | Path parameter {API_KEY} |

### Filter session history
`GET https://apizie.tech/v1/open-data:surfly/history-filter-session-history` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| active_session | boolean | yes | Filter active or inactive sessions. Takes `true` or `false`. |
| agent_id | string | yes | Filter by ID of the agent who joined/started a session. Can take `null` as a value. |
| pin | string | yes | Filter by session pin. Can take `null` as a value. |
| tags | string | yes | Filter by session tag. Can take `null` as a value. |
| min_duration | number | yes | Filter by minimum duration of a session. |
| max_duration | number | yes | Filter by maximum duration of a session. |
| min_date | string | yes | Filter by earlist start date/time. Accepts a timestamp in iso8601 format. Make sure to take the timezone into account |
| max_date | string | yes | Filter by latest start date/time. Accepts a timestamp in iso8601 format. Make sure to take the timezone into account |
| api_key | string | yes | Path parameter {api_key} |

### List
`GET https://apizie.tech/v1/open-data:surfly/webhooks-list-all` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| API_KEY | string | yes | Path parameter {API_KEY} |

### Create
`POST https://apizie.tech/v1/open-data:surfly/webhooks-create-webhook` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| API_KEY | string | yes | Path parameter {API_KEY} |
| body | object | yes | JSON request body |

### Get by Id
`GET https://apizie.tech/v1/open-data:surfly/webhooks-get-webhook-information` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| WEBHOOK_ID | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |

### Update
`POST https://apizie.tech/v1/open-data:surfly/webhooks-update-webhook` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| WEBHOOK_ID | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |
| body | object | yes | JSON request body |

### Delete an Webhook
`POST https://apizie.tech/v1/open-data:surfly/webhooks-remove-webhook` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| WEBHOOK_ID | string | yes |  |
| API_KEY | string | yes | Path parameter {API_KEY} |

### List
`GET https://apizie.tech/v1/open-data:surfly/servers-list-available` (byok)

## Example
```
curl "https://apizie.tech/v1/open-data:surfly/agents-get-list" \
  -H "x-api-key: $APIZIE_KEY" \
  -H "x-upstream-key: $PROVIDER_KEY"
```

## FAQ

### How do I call the Surfly REST API Reference API?
Create a free Apizie key, then send GET https://apizie.tech/v1/open-data:surfly/agents-get-list with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the Surfly REST API Reference API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card. Surfly REST API Reference itself also needs your own key from surfly.com.

### Can AI agents use the Surfly REST API Reference API?
Yes. Add the Apizie MCP server (https://apizie.tech/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key open-data:surfly.

### What is the status of the Surfly REST API Reference API?
Needs your own provider key (bring your own key)
