Skip to content
Hoody.com

This page groups three families of operations on the Hoody control plane:

  • An IP-introspection utility that reports what the Hoody edge saw about the caller.
  • The api:Meta endpoints that publish current platform facts, the API signing key, and social counters. All of these are unauthenticated.
  • The api:Server Commands endpoints that list and execute predefined commands on a server you own.

Use the meta endpoints to render “what version of Hoody is this?” or “how many followers does Hoody have?” widgets on a public page. Use the server-commands endpoints when you want to automate routine operations on a node without granting shell access.

Retrieves information about the caller’s IP address, including geolocation and network details. Returns null for ip_info if the geolocation lookup did not produce a result.

This endpoint takes no parameters.

Terminal window
curl -X GET https://api.hoody.com/api/v1/ip

The endpoints in this section are intentionally public. None of them require authentication, and all of them can be called safely from a browser. They return small, cacheable facts about the Hoody fleet.

Returns a flat key/value map of current Hoody platform facts, for example kernel, the kernel version the server fleet runs.

Flat by contract. Every value is a JSON scalar: string, number, boolean, or null. There are no nested objects and no arrays, and keys cannot contain dots, so the response is always one level deep.

Keys with a shipped default are always present. An administrator can override any of them and can add further keys; an override that is removed reverts to the shipped default rather than disappearing. The response is served with Cache-Control: no-store so an operator change is visible immediately.

This endpoint takes no parameters.

Terminal window
curl -X GET https://api.hoody.com/api/v1/meta/config

Returns a single value from the public configuration map. Same data as GET /api/v1/meta/config, for callers that need exactly one key.

Returns 404 when the key is neither stored nor shipped as a default.

NameInTypeRequiredDescription
keypathstringYesConfiguration key, for example kernel. Must match ^[a-z][a-z0-9_-]{0,63}$, lowercase, starting with a letter, then letters, digits, underscores, or hyphens. Keys are never normalized, so a-b and a_b are distinct, and dots are refused so nesting cannot be simulated.
Terminal window
curl -X GET https://api.hoody.com/api/v1/meta/config/kernel

Returns the ED25519 public key(s) used by Hoody to sign all API responses (X-Hoody-Signature header), identity claims issued at login, and container authorization claims.

Third-party verification flow:

  1. Fetch this endpoint once (cache for 24 hours or more).
  2. Locate the key by kid from the keys[] array.
  3. For response signatures, parse X-Hoody-Signature: t=<ts>,kid=<id>,m=<method>,s=<status>,path=<url>,sig=<hex> and verify sig against the newline-joined tuple ${t}\n${method}\n${status}\n${path}\n${responseBody}.
  4. For identity and container claims, verify claim.signature_hex against claim.payload_b64 bytes.
  5. If kid in a signature or claim does not match any cached key, re-fetch this endpoint.

This endpoint takes no parameters.

Terminal window
curl -X GET https://api.hoody.com/api/v1/meta/public-key

Returns counters for the public Hoody social channels: GitHub stars, Telegram members, Discord members (total + currently online), X followers, and LinkedIn followers.

Counters may lag behind their source channels. When a channel cannot be read, its last known value is kept.

A field is null when no value is known for it yet, or when the counter is not being shown. A field that had a number can become null later, so handle null on every call.

No authentication required.

This endpoint takes no parameters.

Terminal window
curl -X GET https://api.hoody.com/api/v1/meta/social-stats

Returns the paid subserver plans currently on public sale, ordered for display. Each plan carries its resource limits, monthly price, hold policy, and the marketing text used to render it. Texts are translated per field with an English fallback, and text_locales reports which locale each field was served from.

No authentication is required.

NameInTypeRequiredDescription
localequerystringNoLanguage tag such as en, fr or pt-BR. Overrides the Accept-Language header. Unknown or invalid values are served as en.
Terminal window
curl -X GET "https://api.hoody.com/api/v1/meta/subserver-plans?locale=fr"

The endpoints in this section let you list the predefined commands available on a server and execute them. Listing returns command metadata such as the slug, risk level, parameter schema, and rate limits. Execution dispatches the command over SSH and returns a synchronous result, or accepts the command for asynchronous execution if wait: false is set.

GET /api/v1/servers/{serverId}/available-commands

Section titled “GET /api/v1/servers/{serverId}/available-commands”

Returns the list of predefined commands available for execution on a server. Use this to drive a UI that lets users pick a command and fill in its parameters, rather than letting free-form shell text reach the server.

NameInTypeRequiredDescription
serverIdpathstringYesServer ID to get available commands for.
categoryquerystringNoFilter by command category.
risk_levelquerystringNoFilter by maximum risk level. One of low, medium, high, critical.
Terminal window
curl -X GET "https://api.hoody.com/api/v1/servers/507f1f77bcf86cd799439012/available-commands?category=system&risk_level=medium" \
-H "Authorization: Bearer <token>"

POST /api/v1/servers/{serverId}/execute-command

Section titled “POST /api/v1/servers/{serverId}/execute-command”

Executes a predefined command on a server. The command is identified by either command_id (24-character hexadecimal) or command_slug (lowercase alphanumeric with hyphens), exactly one of which is required. Parameters are validated against the command’s parameter_schema and then substituted into the command template.

Set wait: false to accept the command for asynchronous execution and return immediately with a 202 Accepted and an estimated completion time. Set wait: true (the default) to block until the command completes and return its full output and exit code.

High-risk commands return a confirmation challenge on first invocation; the caller re-submits with confirmation_token to actually run the command.

NameInTypeRequiredDescription
serverIdpathstringYesServer ID to execute command on.
FieldTypeRequiredDefaultDescription
command_idstringNo—Command ID to execute. Must match ^[0-9a-f]{24}$. Either command_id or command_slug is required.
command_slugstringNo—Command slug to execute. Must match ^[a-z0-9-]+$. Either command_id or command_slug is required.
parametersobjectNo—Parameters for command template processing, validated against parameter_schema.
waitbooleanNotrueWait for command completion before returning. When false, returns 202 Accepted immediately.
timeoutnumberNo—Command timeout in seconds (1 to 7200). Cannot exceed the command’s max_timeout.
confirmation_tokenstringNo—Confirmation token returned by a prior confirmation challenge for high-risk commands.
{
"command_slug": "restart-service",
"parameters": {
"service_name": "nginx"
},
"wait": true,
"timeout": 300
}
Terminal window
curl -X POST "https://api.hoody.com/api/v1/servers/507f1f77bcf86cd799439012/execute-command" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"command_slug": "restart-service",
"parameters": { "service_name": "nginx" },
"wait": true,
"timeout": 300
}'