Authenticate with a user token
User API access requires your own active Plus or Pro plan, including when accessing shared instances. Free accounts cannot create or use API tokens. Downgrade or plan expiry blocks existing tokens immediately.
- Verify your account’s email address, then open Account → API access.
- Name the integration and choose Read only or Read and write. Add an optional expiry date in UTC and confirm your current password.
- Copy the new token before leaving the page. The full secret is shown once. You can revoke it from API access at any time.
Send the token in every request’s Authorization header. Use Accept: application/json for JSON responses and Content-Type: application/json when sending a JSON body. Keep tokens in your server or secret store.
Authorization: Bearer YOUR_TOKEN
Accept: application/json
These pages cover user API tokens. Detailed Logs streaming uses a separate instance ingestion key; see server ingestion.
Make your first request
GET /api/v1/me returns the account behind the token. Replace YOUR_TOKEN in the examples with your saved token. All curl examples use Bash syntax.
curl "https://dzloggy.com/api/v1/me" \
--header "Authorization: Bearer YOUR_TOKEN" \
--header "Accept: application/json"
{
"data": {
"name": "Server owner",
"email": "[email protected]",
"email_verified_at": "2026-10-15T00:00:00.000000Z",
"created_at": "2026-10-15T00:00:00.000000Z"
}
}
-
Instances Create servers and find their public SIDs.
-
Players Read player activity and manage notes and tags.
-
Logs & events Upload logs and page through the evidence.
Your existing permissions apply
Read-only tokens allow GET requests. POST, PUT and DELETE require a Read and write token as well as the instance permissions below. Shared instances use their owner’s plan, storage allowance and history window.
| Action | Required access |
|---|---|
| Read instances, players, logs and events | Instance owner or member, including viewers |
| Create an instance | Your account must have space within its instance limit |
| Update or archive an instance | Instance owner |
| Add, update or remove a player | Instance owner |
| Upload log files | Instance owner, editor or admin member |
| Update log notes or archive a log | Instance owner |
Use the public sid returned by instance, player and log responses in their URLs. Scope IDs, event IDs and event cursors are opaque strings: pass them back exactly as returned. Read operations return records inside data.
PUT changes the fields listed on each reference page. DELETE archives the selected record; it does not immediately erase stored evidence. There is no PATCH endpoint.
Page through your data
Instance, player, log and persistence-scope lists return data, links and meta. Follow links.next until it is null. Lists are ordered newest first: by record ID, or by generation for persistence scopes.
| Parameter | Accepted values |
|---|---|
page | Integer from 1 to 1,000,000; default 1 |
per_page | Integer from 1 to 100; default 50 |
search | Up to 100 characters. Supported by instance, player and log lists; the fields searched are listed on their reference pages. |
instance | An instance’s public ULID. Supported by player and log lists. |
curl "https://dzloggy.com/api/v1/instances?page=1&per_page=2" \
--header "Authorization: Bearer YOUR_TOKEN" \
--header "Accept: application/json"
{
"data": [
{ "sid": "01K7S8T9V0W1X2Y3Z4A5B6C7D8", "name": "Chernarus EU" },
{ "sid": "01K7S8T9V0W1X2Y3Z4A5B6C7D9", "name": "Livonia EU" }
],
"links": {
"first": "https://dzloggy.com/api/v1/instances?page=1&per_page=2",
"last": "https://dzloggy.com/api/v1/instances?page=2&per_page=2",
"prev": null,
"next": "https://dzloggy.com/api/v1/instances?page=2&per_page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 2,
"path": "https://dzloggy.com/api/v1/instances",
"per_page": 2,
"to": 2,
"total": 3
}
}
Pagination links retain your search, instance and page-size filters. An empty page has an empty data array. Page-based lists can change while new records arrive; event lists instead use source-specific cursors.
Handle responses and rate limits
| Status | Meaning |
|---|---|
200 | Successful read or update |
201 | Instance or player created; Location points to its API resource |
202 | Log upload accepted for processing, or event details are still pending |
204 | Record archived successfully; the response body is empty |
401 | Missing, invalid, expired or revoked user token |
403 | Unverified email, a read-only token attempting a write, insufficient instance permissions, or a plan feature restriction |
404 | Record missing, archived, outside your access or outside the owner’s searchable log history |
410 | The requested raw log file is no longer available |
422 | Validation failed or a plan quota was reached; inspect the errors object |
429 | Rate limit reached; wait for the number of seconds in Retry-After before retrying |
503 | Raw storage is waiting for rolling cleanup. Retry the upload after the number of seconds in Retry-After. Files needed for processing or protected by a legal hold cannot be removed yet. |
{
"message": "The name field is required.",
"errors": {
"name": ["The name field is required."]
}
}
User API requests share a limit of 120 per minute per account across all its tokens and endpoints. Token management has its own limit, so you can still revoke a busy integration. Repeated invalid tokens from one IP address are answered with 429 for up to a minute; valid tokens from that address keep working. Your account must remain email-verified to use its tokens. Server ingestion keys have separate limits, described under server ingestion.