Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/skrime:skrime-server-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: SKRIME API (read only) Server API
version: ee58e62caf7f
description: Reading endpoints of the SKRIME API without secrets. Descriptions in German, structure in English.
termsOfService: https://skrime.eu/tos
contact:
name: SKRIME
url: https://skrime.eu/
email: vertrieb@skrime.eu
servers:
- url: https://skrime.eu/sandbox
description: 'Sandbox: validates like the live API, answers with test data, changes nothing and costs nothing'
- url: https://skrime.eu/api
description: Live
security:
- bearerAuth: []
tags:
- name: Server
description: KVM Server
paths:
/server/pricelist:
get:
operationId: get_server_pricelist
summary: Preisliste abrufen
tags:
- Server
x-skrime-risk: L
description: Die Parameter "catalog" und "voucher" sind optional
parameters:
- name: type
in: query
required: true
schema:
type: string
enum:
- server
- server-config
example: server
- name: cores
in: query
required: false
schema:
type: integer
example: 4
- name: memory
in: query
required: false
schema:
type: integer
example: 8
- name: disk
in: query
required: false
schema:
type: integer
example: 50
- name: ipv4
in: query
required: false
schema:
type: integer
example: 1
- name: ipv6
in: query
required: false
schema:
type: integer
example: 1
- name: connection
in: query
required: false
schema:
type: integer
example: 10
- name: catalog
in: query
required: false
schema: {}
- name: voucher
in: query
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
variant1:
summary: Preisliste abrufen
value:
response: Successfully fetched pricelist
state: success
data:
- id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
userId: ''
type: server
state: active
productInfo:
cores: 4
memory: 8192
disk: 100
ipv4: 1
ipv6: 1
connection: 10
type: epyc
vds: false
price: '0.00'
duration: '1'
discountOrder: '0.00'
discountOrderAmount: '0.00'
discountRenew: '0.00'
discountRenewAmount: '0.00'
discountExpire: '2024-01-01 00:00:00'
voucher: ''
voucherOrder: '0'
voucherOrderAmount: '0.00'
voucherRenew: '0'
voucherRenewAmount: '0.00'
finalOrderPrice: '0.00'
finalRenewPrice: '0.00'
prepayOptions:
- months: 1
billingCycles: 1
loyaltyPercent: 0
listTotal: '0.00'
discountOrderAmount: '0.00'
discountRenewAmount: '0.00'
voucherOrderAmount: '0.00'
voucherRenewAmount: '0.00'
subtotal: '0.00'
loyaltyDiscount: '0.00'
finalTotal: '0.00'
- months: 12
billingCycles: 12
loyaltyPercent: 0
listTotal: '0.00'
discountOrderAmount: '0.00'
discountRenewAmount: '0.00'
voucherOrderAmount: '0.00'
voucherRenewAmount: '0.00'
subtotal: '0.00'
loyaltyDiscount: '0.00'
finalTotal: '0.00'
createdAt: '2024-01-01 00:00:00'
variant2:
summary: Konfiguratorpreis abrufen
value:
response: Successfully fetched configurator pricing
state: success
data:
id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
userId: ''
type: server-config
state: active
productInfo:
cores: '0.00'
memory: '0.00'
disk: '0.00'
ipv4: '0.00'
ipv6: '0.00'
connection: '0.00'
type: epyc
vds: false
price: '0.00'
duration: '1'
discountOrder: '0.00'
discountOrderAmount: '0.00'
discountRenew: '0.00'
discountRenewAmount: '0.00'
discountExpire: '2024-01-01 00:00:00'
voucher: ''
voucherOrder: '0'
voucherOrderAmount: '0.00'
voucherRenew: '0'
voucherRenewAmount: '0.00'
finalOrderPrice: '0.00'
finalRenewPrice: '0.00'
prepayOptions:
- months: 1
billingCycles: 1
loyaltyPercent: 0
listTotal: '0.00'
discountOrderAmount: '0.00'
discountRenewAmount: '0.00'
voucherOrderAmount: '0.00'
voucherRenewAmount: '0.00'
subtotal: '0.00'
loyaltyDiscount: '0.00'
finalTotal: '0.00'
- months: 12
billingCycles: 12
loyaltyPercent: 0
listTotal: '0.00'
discountOrderAmount: '0.00'
discountRenewAmount: '0.00'
voucherOrderAmount: '0.00'
voucherRenewAmount: '0.00'
subtotal: '0.00'
loyaltyDiscount: '0.00'
finalTotal: '0.00'
config: eyJjIjo0LCJtIjo4LCJkIjo1MCwiNCI6MSwiNiI6MSwiY29uIjoxMH0=
configuration:
cores: 4
memory: 8
disk: 50
ipv4: 1
ipv6: 1
connection: 10
createdAt: '2024-01-01 00:00:00'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'423':
$ref: '#/components/responses/Locked'
/server/os:
get:
operationId: get_server_os
summary: Betriebssysteme abrufen
tags:
- Server
x-skrime-risk: L
description: Apps sind vorkonfigurierte Debian 13 Templates, die Einrichtung läuft beim ersten SSH Login
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Betriebssysteme abrufen
value:
response: Successfully fetched operating systems
state: success
data:
- id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
type: os
name: Debian 12
proxmoxId: debian-12
image: https://skrime.eu/data/os/debian.svg
group: Debian
minDisk: 10
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'423':
$ref: '#/components/responses/Locked'
/server/novnc:
get:
operationId: get_server_novnc
summary: noVNC URL erzeugen
tags:
- Server
x-skrime-risk: L
parameters:
- name: productId
in: query
required: true
schema:
type: string
example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: noVNC URL erzeugen
value:
response: Successfully generated noVNC URL
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
url: https://novnc.eu/vnc.html#host=novnc.eu&port=443&encrypt=1&path=%3Ftoken=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&password=Xk7pQm2v&autoconnect=1&show_dot=true&scaleViewport=true
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'423':
$ref: '#/components/responses/Locked'
/server/network:
get:
operationId: get_server_network
summary: Netzwerkinformationen abrufen
tags:
- Server
x-skrime-risk: L
description: Je IPv4- und IPv6-Eintrag kommt das Feld "countryCode" hinzu, sobald der Aufrufer das Recht team.statistic.ipam.view besitzt und das Land hinterlegt ist, bei IPv6 im RIPE-Objekt des /64 oder des übergeordneten Netzes
parameters:
- name: productId
in: query
required: true
schema:
type: string
example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Netzwerkinformationen abrufen
value:
response: Successfully fetched network
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
ipv4:
- ipAddress: 127.0.0.1/24
gateway: 127.0.0.1
hostname: server.domain.tld
ipv6:
- zone: fe80::/64
ipAddress: fe80::/64
gateway: 'fe80::'
hostname: server.domain.tld
- zone: fe80::/64
ipAddress: 'fe80::'
gateway: 'fe80::'
hostname: mail.domain.tld
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'423':
$ref: '#/components/responses/Locked'
/server/ddos:
get:
operationId: get_server_ddos
summary: DDoS Statistik abrufen
tags:
- Server
x-skrime-risk: L
description: 'Verfügbare "period": 10m, 1h, 1d, 1w'
parameters:
- name: productId
in: query
required: true
schema:
type: string
example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- name: scope
in: query
required: true
schema:
type: string
enum:
- stats
- ports
- attacks
- attack
example: stats
- name: ipAddress
in: query
required: false
schema:
type: string
example: 127.0.0.1
- name: period
in: query
required: false
schema:
type: string
enum:
- 10m
- 1h
- 1d
- 1w
example: 1h
- name: attackId
in: query
required: false
schema:
type: string
example: XXXXXX
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
variant1:
summary: DDoS Statistik abrufen
value:
response: Successfully fetched DDoS statistics
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
ipAddress: 127.0.0.1
period: 1h
passUnit: Mbps
dropUnit: Mbps
statistics:
- time: '2024-01-01 00:00:00'
passed: 12.5
dropped: 0.75
variant2:
summary: DDoS Ports abrufen
value:
response: Successfully fetched DDoS ports
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
ipAddress: 127.0.0.1
ports:
- ruleId: XXXXXX
state: working
ipAddress: 127.0.0.1
name: SSH
port: 22
protocol: TCP
variant3:
summary: DDoS Angriffe abrufen
value:
response: Successfully fetched DDoS attacks
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
ipAddress: 127.0.0.1
attacks:
- id: XXXXXX
type: UDP_FLOOD
ipAddress: 127.0.0.1
peak: 100000000
start: '2024-01-01 00:00:00'
stop: '2024-01-01 00:00:00'
variant4:
summary: DDoS Angriff abrufen
value:
response: Successfully fetched attack details
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
type: UDP_FLOOD
attackId: XXXXXX
ipAddress: 127.0.0.1
peak: 100000000
ports:
- port: 443
protocol: UDP
packetsPeak: 500000
start: '2024-01-01 00:00:00'
stop: '2024-01-01 00:00:00'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'423':
$ref: '#/components/responses/Locked'
/server/firewall:
get:
operationId: get_server_firewall
summary: Firewall Regeln abrufen
tags:
- Server
x-skrime-risk: L
parameters:
- name: productId
in: query
required: true
schema:
type: string
example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Firewall Regeln abrufen
value:
response: Successfully fetched firewall rules
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
rules:
- pos: 0
type: in
action: ACCEPT
enabled: true
macro: ''
protocol: tcp
source: ''
sourcePort: ''
destination: ''
destinationPort: '22'
icmpType: ''
isGroup: false
locked: false
group: ''
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'423':
$ref: '#/components/responses/Locked'
/server/statistic:
get:
operationId: get_server_statistic
summary: Statistiken abrufen
tags:
- Server
x-skrime-risk: L
description: 'Parameter "period" muss einer der folgenden Werte sein: hour, day, week, month'
parameters:
- name: productId
in: query
required: true
schema:
type: string
example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- name: period
in: query
required: true
schema:
type: string
enum:
- hour
- day
- week
- month
example: hour
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Statistiken abrufen
value:
response: Successfully fetched server statistics
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
statistics:
- time: '2024-01-01 00:00:00'
cpu: 25.5
memory: 3.87
netin: 10.52
netout: 5.24
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'423':
$ref: '#/components/responses/Locked'
/server/backup:
get:
operationId: get_server_backup
summary: Backups abrufen
tags:
- Server
x-skrime-risk: L
parameters:
- name: productId
in: query
required: true
schema:
type: string
example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Backups abrufen
value:
response: Successfully fetched backups
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
backups:
- volid: local:vzdump-qemu-100-2026_09_23-14_05_12.vma.zst
size: '10.50'
createdAt: '2024-01-01 00:00:00'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'423':
$ref: '#/components/responses/Locked'
components:
responses:
Unauthorized:
description: The API key is missing or invalid
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
example:
response: Unauthorized access, please log in or provide a valid key
state: error
data: []
Forbidden:
description: Missing permission, interface required or multi factor authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
example:
response: Unauthorized access, please check your permissions
state: error
data: []
BadRequest:
description: 'Invalid request: a field is missing or a value is invalid'
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
example:
response: Invalid request, please provide a productId
state: error
data: []
Locked:
description: Access is blocked because the product is suspended, data.reason names the reason
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
example:
response: Access blocked due to product suspension
state: error
data:
reason: Payment overdue
NotFound:
description: The requested record does not exist or is inactive
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
example:
response: No product found or product is suspended
state: error
data: []
schemas:
Envelope:
type: object
required:
- response
- state
- data
properties:
response:
type: string
description: English message, stable per case
state:
type: string
enum:
- success
- error
data:
description: Payload, an empty array when there is none
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: API key from the SKRIME dashboard, read it from the environment variable SKRIME_API_KEY