Browse the docs
Account
The account the API key belongs to. A key can only read the account (scope account.read); everything that changes it, such as the email address, password, two-factor, API keys and SSH keys, needs a browser session and is not part of the public API.
Get the account
GET/account
Account scope account.read
Returns the account the API key belongs to. Works even when two-factor authentication is required but not yet set up.
Example
curl "https://sillydev.co.uk/panel/api/client/account" \ -H "Authorization: Bearer $SILLYDEV_API_KEY" \ -H "Accept: application/json"
Response 200The account.
{
"object": "user",
"attributes": {
"id": 42,
"admin": false,
"username": "discordbotdev",
"email": "[email protected]",
"first_name": "Alex",
"last_name": "Smith",
"language": "en"
}
}Every field in the response
| Name | Type | Description |
|---|---|---|
| objectrequired | string | |
| attributesrequired | object | |
| attributes.idrequired | integer | |
| attributes.adminrequired | boolean | Whether the account is a panel administrator. |
| attributes.usernamerequired | string | |
| attributes.emailrequired | string (email) | |
| attributes.first_namerequired | string | |
| attributes.last_namerequired | string | |
| attributes.languagerequired | string | Interface language code, e.g. en. |
Errors
- 401 No API key was sent, or it is wrong, expired or deleted.
- 403 The key is valid but may not do this: it lacks the permission or account scope, it is limited to other servers or IP addresses, or the account may not do it at all.
List the account's activity log
GET/account/activity
Account scope account.read
Returns the account's activity log, newest first when sorted by -timestamp, 25 entries per page by default and at most 100. Actions an administrator took on the account are not shown, except ones the requesting administrator took themselves.
Parameters
| Name | Type | Description |
|---|---|---|
| page | integer | The page of results to return, starting at 1. |
| per_page | integer | How many results to return on each page. |
| filter[event] | string | Only entries whose event name contains this text, e.g. server:power or user:api-key. |
| sort | one of 'timestamp', '-timestamp' | Sort by time, timestamp for oldest first or -timestamp for newest first. |
| include | one of 'actor' | Set to actor to add the user who performed each action as attributes.relationships.actor. |
Example
curl "https://sillydev.co.uk/panel/api/client/account/activity" \ -H "Authorization: Bearer $SILLYDEV_API_KEY" \ -H "Accept: application/json"
Response 200A page of activity log entries.
{
"object": "list",
"data": [
{
"object": "activity_log",
"attributes": {
"id": "3f786850e387550fdab836ed7e6dc881de23001b",
"batch": null,
"event": "user:database.create",
"is_api": true,
"ip": "203.0.113.10",
"description": null,
"properties": {
"label": "Discord bot",
"version": "MariaDB 11.4"
},
"has_additional_metadata": false,
"timestamp": "2026-10-10T12:00:00+00:00"
}
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 25,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}Every field in the response
| Name | Type | Description |
|---|---|---|
| objectrequired | string | |
| datarequired | array of object | |
| data[].objectrequired | string | |
| data[].attributesrequired | object | One thing that was done, by whom and when. |
| data[].attributes.idrequired | string | A stable unique key for the entry (a hash, not a database ID). |
| data[].attributes.batchrequired | string (uuid) | null | Shared by entries logged together as part of one action. |
| data[].attributes.eventrequired | string | The event name, e.g. server:power.start or server:file.write. |
| data[].attributes.is_apirequired | boolean | Whether it was done with an API key. |
| data[].attributes.iprequired | string | null | The IP address it came from. Only shown for your own actions (or to administrators). |
| data[].attributes.descriptionrequired | string | null | |
| data[].attributes.propertiesrequired | object | Details of the event, which vary by event. List values also get a <key>_count entry (or count, if there is only one list). An ip property is [hidden] unless it was your action. |
| data[].attributes.has_additional_metadatarequired | boolean | Whether properties holds anything beyond what the event's description already says. |
| data[].attributes.timestamprequired | string (date-time) | |
| data[].attributes.relationships | object | |
| data[].attributes.relationships.actor | any | Who did it. Only with include=actor; a null_resource if it was not a user (e.g. the system or a schedule). |
| metarequired | object | |
| meta.paginationrequired | object | |
| meta.pagination.total | integer | |
| meta.pagination.count | integer | |
| meta.pagination.per_page | integer | |
| meta.pagination.current_page | integer | |
| meta.pagination.total_pages | integer | |
| meta.pagination.links | object | |
| meta.pagination.links.previous | string (uri) | |
| meta.pagination.links.next | string (uri) |
Errors
- 401 No API key was sent, or it is wrong, expired or deleted.
- 403 The key is valid but may not do this: it lacks the permission or account scope, it is limited to other servers or IP addresses, or the account may not do it at all.