Void Presence API endpoints
Browse HTTP endpoints in the same layout as your release schedule.
API overview
Use these HTTP endpoints to fetch presence configs and status cycles directly from Void Presence.
All responses are JSON and designed to be copy-pastable into your own tools or scripts.
API resources
Endpoints cover presence configs, status cycles and authentication helpers.
Use them from your own tools or backend services to integrate with Void Presence.
Authentication
Most public endpoints do not require authentication.
You can inspect all HTTP API references directly in the web source.
View API references on GitHubRate limits & usage
Avoid polling these endpoints aggressively from public clients.
Prefer calling them from your own backend or tools when possible.
18 endpoints found
API endpoints
v2
- /v2/github/releasesPOSTPublic
fetch('https://api.voidpresence.com/v2/github/releases', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ app: 'void-presence', platform: 'windows' }), }) .then(res => res.json()) .then(info => console.log(info)){ "requestBody": { "app": "void-presence", "platform": "windows" }, "responseBody": { "tag": "v2.13.13", "assetName": "Void.Presence.Setup.2.13.13.exe", "downloadUrl": "https://github.com/Devollox/void-presence/releases/download/v2.13.13/Void.Presence.Setup.2.13.13.exe", "body": "Release notes for v2.13.13…" } }
v1
- /v1/authors/resolveGETPublic
fetch('https://api.voidpresence.com/v1/authors/resolve?username=Author%20Name&tag=1234') .then(res => res.json()) .then(data => console.log(data)){ "responseBody": { "user": { "name": "Author Name", "avatar": "https://example.com/avatar.png", "tag": "1234", "provider": "discord", "createdAt": 123456789, "lastSeen": 123456789 }, "presenceConfigs": [ { "id": "cfg-1", "title": "Presence config title", "author": "Author Name", "authorAvatar": "https://example.com/avatar.png", "authorTag": "1234", "downloads": 0, "description": "Config description", "averageColors": [ "#ffffff" ], "configData": { "cycles": [ { "details": "Details line", "state": "State line" } ], "imageCycles": [], "buttonPairs": [] }, "uploadedAt": 123456789 } ], "statusConfigs": [ { "id": "status-1", "title": "Status config title", "author": "Author Name", "authorAvatar": "https://example.com/avatar.png", "authorTag": "1234", "downloads": 0, "description": "Status description", "configData": { "statusCycles": [ { "text": "Example status text" } ] }, "uploadedAt": 123456789 } ] } } - /v1/authors/resolvePOSTPublic
fetch('https://api.voidpresence.com/v1/authors/resolve', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username: 'Author Name', tag: '1234' }), }) .then(res => res.json()) .then(data => console.log(data)){ "requestBody": { "username": "Author Name", "tag": "1234" }, "responseBody": { "user": { "name": "Author Name", "avatar": "https://example.com/avatar.png", "tag": "1234", "provider": "discord", "createdAt": 123456789, "lastSeen": 123456789 }, "presenceConfigs": [ { "id": "cfg-1", "title": "Presence config title", "author": "Author Name", "authorAvatar": "https://example.com/avatar.png", "authorTag": "1234", "downloads": 0, "description": "Config description", "averageColors": [ "#ffffff" ], "configData": { "cycles": [ { "details": "Details line", "state": "State line" } ], "imageCycles": [], "buttonPairs": [] }, "uploadedAt": 123456789 } ], "statusConfigs": [ { "id": "status-1", "title": "Status config title", "author": "Author Name", "authorAvatar": "https://example.com/avatar.png", "authorTag": "1234", "downloads": 0, "description": "Status description", "configData": { "statusCycles": [ { "text": "Example status text" } ] }, "uploadedAt": 123456789 } ] } } - /v1/authors/{authorId}/configsPOSTAuth required
fetch('https://api.voidpresence.com/v1/authors/123456789/configs', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ kind: 'presence', title: 'Presence title', author: 'Author name', description: 'Presence description', configData: { cycles: [{ details: 'Details line', state: 'State line' }], imageCycles: [ { largeImage: 'https://example.com/large-image.png', largeText: 'Large image text', smallImage: 'https://example.com/small-image.png', smallText: 'Small image text' } ], buttonPairs: [ { label1: 'Button 1 label', url1: 'https://example.com/button-1', label2: 'Button 2 label', url2: 'https://example.com/button-2' } ] }, downloads: 0, uploadedAt: Date.now(), averageColor: '#ffffff' }), }) .then(res => res.json()) .then(result => console.log(result.id)){ "requestBody": { "kind": "presence", "title": "Presence title", "author": "Author name", "description": "Presence description", "configData": { "cycles": [ { "details": "Details line", "state": "State line" } ], "imageCycles": [ { "largeImage": "https://example.com/large-image.png", "largeText": "Large image text", "smallImage": "https://example.com/small-image.png", "smallText": "Small image text" } ], "buttonPairs": [ { "label1": "Button 1 label", "url1": "https://example.com/button-1", "label2": "Button 2 label", "url2": "https://example.com/button-2" } ] }, "downloads": 0, "uploadedAt": 123456789, "averageColor": "#ffffff" }, "responseBody": { "id": "123456789" } } - /v1/authors/{authorId}/configsGETAuth required
fetch('https://api.voidpresence.com/v1/authors/123456789/configs') .then(res => res.json()) .then(data => console.log(data)){ "responseBody": { "user": { "id": "123456789", "name": "Author Name", "avatar": "https://example.com/avatar.png", "tag": "1234", "provider": "discord", "createdAt": 123456789, "lastSeen": 123456789 }, "presenceConfigs": [ { "id": "cfg-1", "title": "Presence config title", "author": "Author Name", "authorAvatar": "https://example.com/avatar.png", "authorTag": "1234", "downloads": 0, "description": "Config description", "configData": { "cycles": [ { "details": "Details line", "state": "State line" } ], "imageCycles": [], "buttonPairs": [] }, "averageColors": [ "#ffffff" ], "uploadedAt": 123456789 } ], "statusConfigs": [ { "id": "status-1", "title": "Status config title", "author": "Author Name", "authorAvatar": "https://example.com/avatar.png", "authorTag": "1234", "downloads": 0, "description": "Status description", "configData": { "statusCycles": [ { "text": "Example status text" } ] }, "uploadedAt": 123456789 } ] } }
- /v1/configsPOSTPublic
fetch('https://voidpresence.com/api/v1/configs', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ kind: 'presence' }), }) .then(res => res.json()) .then(list => console.log(list)){ "requestBody": { "kind": "presence" }, "responseBody": { "items": [ { "id": "123456789", "title": "Config title", "author": "Author name", "authorAvatar": "https://example.com/avatar.png", "authorTag": "1234", "downloads": 0, "description": "Config description", "averageColors": [ "#ffffff" ], "configData": { "cycles": [ { "details": "Details line", "state": "State line" } ], "imageCycles": [], "buttonPairs": [] }, "uploadedAt": 123456789 } ], "total": 1, "offset": 0, "limit": 24 } } - /v1/configs/{id}POSTPublic
fetch('https://api.voidpresence.com/v1/configs/123456789', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ kind: 'presence' }), }) .then(res => res.json()) .then(config => console.log(config)){ "requestBody": { "kind": "presence" }, "responseBody": { "id": "123456789", "title": "Config title", "author": "Author name", "authorAvatar": "https://example.com/avatar.png", "authorTag": "1234", "downloads": 0, "description": "Config description", "configData": { "cycles": [ { "details": "Details line", "state": "State line" } ], "imageCycles": [], "buttonPairs": [] }, "averageColors": [ "#ffffff" ], "uploadedAt": 123456789 } } - /v1/configs/{id}/downloadGETPublic
fetch('https://voidpresence.com/api/v1/configs/123456789/download?kind=presence') .then(res => res.blob()) .then(file => console.log(file)){ "status": "200 OK", "headers": { "Content-Type": "application/json", "Content-Disposition": "attachment; filename=\"Config title.json\"" } } - /v1/configs/{id}/copyGETPublic
fetch('https://voidpresence.com/api/v1/configs/123456789/copy?kind=presence') .then(res => res.json()) .then(json => console.log(json)){ "responseBody": { "cycles": [], "imageCycles": [], "buttonPairs": [] } } - /v1/configs/{id}/deleteDELETEAuth required
fetch('https://voidpresence.com/api/v1/configs/123456789/delete?kind=presence', { method: 'DELETE', }) .then(res => res.json()) .then(result => console.log(result)){ "responseBody": { "ok": true } }
- /v1/github/releasesPOSTPublic
fetch('https://api.voidpresence.com/v1/github/releases', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ app: 'void-presence' }), }) .then(res => res.json()) .then(info => console.log(info)){ "requestBody": { "app": "void-presence" }, "responseBody": { "tag": "vX.Y.Z", "assetName": "Void.Presence.Setup.X.Y.Z.exe", "downloadUrl": "https://github.com/Devollox/void-presence/releases/download/vX.Y.Z/Void.Presence.Setup.X.Y.Z.exe", "body": "vX.Y.Z release notes body text here." } }
- /v1/analytics/appPOSTAuth required
fetch('https://api.voidpresence.com/v1/analytics/app', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ type: 'app_download', channel: 'installer', }), }) .then(res => res.json()) .then(result => console.log(result)){ "requestBody": { "type": "app_download", "channel": "installer", "meta": { "platform": "windows", "version": "2.5.0" } }, "responseBody": { "ok": true, "type": "app_download", "stats": { "downloads": { "count": 123, "lastUpdated": 123456789 } } } } - /v1/analytics/configsPOSTPublic
fetch('https://api.voidpresence.com/v1/analytics/configs', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ type: 'presence_download', id: '123456789' }), }) .then(res => res.json()) .then(result => console.log(result)){ "requestBody": { "type": "presence_download", "id": "123456789", "client": "void-desktop", "meta": { "platform": "windows", "version": "2.5.0" } }, "responseBody": { "ok": true } }
v0
- /api/auth/sessionGETAuth required
fetch('https://voidpresence.com/api/auth/session') .then(res => res.json()) .then(session => console.log(session)){ "user": { "name": "User name", "email": "user@example.com", "image": "https://example.com/avatar.png" }, "expires": "2026-07-01T21:59:00.000Z", "provider": "discord" } - /api/auth/signin/{provider}GETPublic
window.location.href = 'https://voidpresence.com/api/auth/signin/discord'{ "redirect": true, "provider": "discord", "url": "https://discord.com/oauth2/authorize?..." } - /api/auth/callback/{provider}GETPublic
- /api/auth/fuckoffnextauth/{provider}GETPublic
fetch('https://voidpresence.com/api/auth/fuckoffnextauth/steam?state=state-value&code=authorization-code&redirectUri=https://example.com/callback') .then(res => res.json()) .then(result => console.log(result.normalizedParams)){ "ok": true, "provider": "steam", "normalizedParams": { "state": "state-value", "code": "authorization-code", "redirectUri": "https://example.com/callback" } }
- /api/auth/users/syncGETAuth required
fetch('https://voidpresence.com/api/auth/users/sync') .then(res => res.json()) .then(user => console.log(user)){ "id": "123456789", "name": "User Name", "avatar": "https://example.com/avatar.png", "tag": "1234", "provider": "discord" }