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-product-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) Product 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: Product
description: Produkt
paths:
/product/all:
get:
operationId: get_product_all
summary: Alle Produkte abrufen
tags:
- Product
x-skrime-risk: L
description: Der Parameter "type" ist optional
parameters:
- name: type
in: query
required: false
schema:
type: string
example: server
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Alle Produkte abrufen
value:
response: Successfully fetched products
state: success
data:
- id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
userId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
type: server
state: active
userRights: []
productInfo:
view:
reason: ''
renew:
reason: ''
price: '0.00'
duration: '1'
discount: '0.00'
priceBeforeDiscount: '0.00'
days: '30'
customName: Mein Server
autoRenew: true
expireAt: '2024-01-01 00:00:00'
deletedAt: '2024-01-01 00:00:00'
updatedAt: '2024-01-01 00:00:00'
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'
/product/search:
get:
operationId: get_product_search
summary: Produkte durchsuchen
tags:
- Product
x-skrime-risk: L
parameters:
- name: search
in: query
required: true
schema:
type: string
example: 127.0.0.1
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Produkte durchsuchen
value:
response: Successfully fetched products
state: success
data:
- id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
userId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
type: server
state: active
userRights: []
productInfo:
view:
reason: ''
renew:
reason: ''
price: '0.00'
duration: '1'
discount: '0.00'
priceBeforeDiscount: '0.00'
days: '30'
customName: Mein Server
autoRenew: true
ipv4:
- ipAddress: 127.0.0.1
gateway: 127.0.0.1
type: main
ipv6:
- ipAddress: 'fe80::'
gateway: 'fe80::'
type: main
expireAt: '2024-01-01 00:00:00'
deletedAt: '2024-01-01 00:00:00'
updatedAt: '2024-01-01 00:00:00'
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'
/product/single:
get:
operationId: get_product_single
summary: Einzelnes Produkt abrufen
tags:
- Product
x-skrime-risk: L
description: Alternativ kann "domain" statt "productId" verwendet werden
parameters:
- name: productId
in: query
required: false
schema:
type: string
example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- name: domain
in: query
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Einzelnes Produkt abrufen
value:
response: Successfully fetched product
state: success
data:
id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
userId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
type: server
state: active
userRights: []
productInfo:
view:
reason: ''
renew:
reason: ''
price: '0.00'
duration: '1'
discount: '0.00'
priceBeforeDiscount: '0.00'
days: '30'
customName: Mein Server
autoRenew: true
expireAt: '2024-01-01 00:00:00'
deletedAt: '2024-01-01 00:00:00'
updatedAt: '2024-01-01 00:00:00'
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'
/product/status:
get:
operationId: get_product_status
summary: Störungsstatus abrufen
tags:
- Product
x-skrime-risk: L
description: Meldet Störungen der Plattform, nicht den Zustand einer bestellten Statusseite
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Störungsstatus abrufen
value:
response: Successfully fetched status
state: success
data:
hasOffline: false
hasNotifications: true
hasIssues: 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'
/product/rights:
get:
operationId: get_product_rights
summary: Benutzer abrufen
tags:
- Product
x-skrime-risk: L
description: Alternativ kann "domain" statt "productId" verwendet werden
parameters:
- name: productId
in: query
required: false
schema:
type: string
example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- name: domain
in: query
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Benutzer abrufen
value:
response: Successfully fetched user rights
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
users:
- userId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
username: Max Mustermann
avatar: https://skrime.eu/data/avatar/XXXXX.svg
description: Administrator
'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'
/product/renew:
get:
operationId: get_product_renew
summary: Verlängerungsoptionen abrufen
tags:
- Product
x-skrime-risk: L
description: Nur Produkte vom Typ "server" mit einer Laufzeit von einem Monat werden unterstützt
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: Verlängerungsoptionen abrufen
value:
response: Successfully fetched renew options
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
duration: '1'
renewPrice: '0.00'
options:
- months: 1
loyaltyPercent: 0
subtotal: '0.00'
loyaltyDiscount: '0.00'
finalTotal: '0.00'
- months: 12
loyaltyPercent: 0
subtotal: '0.00'
loyaltyDiscount: '0.00'
finalTotal: '0.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'
/product/log:
get:
operationId: get_product_log
summary: Produkt Log abrufen
tags:
- Product
x-skrime-risk: L
description: Alternativ kann "domain" statt "productId" verwendet werden
parameters:
- name: productId
in: query
required: false
schema:
type: string
example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- name: domain
in: query
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Envelope'
examples:
example:
summary: Produkt Log abrufen
value:
response: Successfully fetched product logs
state: success
data:
productId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
logs:
- id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
userId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
username: Max Mustermann
message: Produkt verlängert
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