Skip to content
Hoody.com

The Servers API lets you browse the rental marketplace, rent physical servers and delivery-lead-time offers, manage active rentals and reservations, and organize servers into pools for team collaboration. Use these endpoints to discover hardware, rent for a chosen duration, extend an active rental, and look up live CPU, memory, and disk metrics for any server you currently hold.

Browse the rental marketplace. Returns servers that can be rented immediately (in stock). Apply query filters to narrow by location, hardware specs, network capacity, and price.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/servers/available?country=US&min_cpu_cores=32&featured_only=true" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
countryquerystringNoFilter by country code (e.g., US, DE)
regionquerystringNoFilter by region (e.g., us-east, eu-central)
max_price_per_dayquerynumberNoMaximum price per day in USD
available_durationsqueryarrayNoFilter servers that support these rental durations (days)
min_cpu_coresquerynumberNoMinimum CPU cores
min_cpu_scorequerynumberNoMinimum CPU benchmark score
cpu_score_typequerystringNoCPU benchmark type for score filtering. Allowed values: passmark, geekbench_single, geekbench_multi
min_ram_gbquerynumberNoMinimum RAM in GB
ram_typesqueryarrayNoFilter by RAM types
min_total_storage_gbquerynumberNoMinimum total storage in GB
disk_typesqueryarrayNoFilter servers with these disk types
min_bandwidth_mbpsquerynumberNoMinimum network bandwidth in Mbps
min_traffic_tbquerynumberNoMinimum monthly traffic allowance in TB
unlimited_traffic_onlyquerybooleanNoShow only servers with unlimited traffic
categoryquerystringNoFilter by server category. Allowed values: compute, memory, storage, general, gpu
featured_onlyquerybooleanNoShow only featured servers

Success.


Browse machines available to order with a delivery lead time. Distinguished from in-stock listings by delivery_hours: in-stock servers report 0, while offers report 1..720.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/offers" \
-H "Authorization: Bearer <token>"

This endpoint takes no parameters.

Success.


Reserve an offer. Charges immediately. Provide an idempotency_key to make the request safely retryable — replaying the same key returns the original reservation, unpaid twice.

Terminal window
curl -X POST "https://api.hoody.icu/api/v1/offers/507f1f77bcf86cd799439020/reserve" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"days": 30,
"max_charge_cents": 45000,
"idempotency_key": "reserve-2025-01-21-001"
}'
NameInTypeRequiredDescription
idpathstringYesOffer ID
FieldTypeRequiredDescription
daysnumberYesMust be one of the offer’s pricing_rules keys.
max_charge_centsnumberNoCeiling on the total debit (rent + one-time setup fee), in integer cents. Required whenever a setup fee applies.
idempotency_keystringYesCaller-generated key. Replaying it returns the original reservation, unpaid twice.
pool_idstringNoMust be a pool you own. Defaults to your default pool.

List your reservations for ordered-but-not-yet-delivered offers.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/reservations?limit=20&offset=0" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
limitqueryintegerNoMaximum number of reservations to return. Default: 50.
offsetqueryintegerNoNumber of reservations to skip. Default: 0.

Success.


Get one of your reservations by ID.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/reservations/507f1f77bcf86cd799439350" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
idpathstringYesReservation ID

Success.


List your rented servers. Alias for /api/v1/rentals.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/servers" \
-H "Authorization: Bearer <token>"

This endpoint takes no parameters.

Success.


Get details about one of your rented servers. Alias for /api/v1/rentals/{id}.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/servers/507f1f77bcf86cd799439320" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
idpathstringYesRental/Server ID

Success.


Rent an available server for a specified duration. Some servers carry a one-time setup fee charged only on this first payment (never on extension); when they do, the request must confirm the total via max_charge_cents.

Terminal window
curl -X POST "https://api.hoody.icu/api/v1/servers/507f1f77bcf86cd799439014/rent" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"rental_days": 7,
"max_charge_cents": 9500,
"pool_id": "507f1f77bcf86cd799439300"
}'
NameInTypeRequiredDescription
idpathstringYesServer ID
FieldTypeRequiredDescription
pool_idstringNoMust match ^[0-9a-f]{24}$.
rental_daysintegerYesNumber of days to rent (must match server pricing durations, max 3650).
max_charge_centsintegerNoCeiling on the total debit (rental price + one-time setup fee), in integer cents. Required for every paid rental.

List all rentals for the authenticated user.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/rentals" \
-H "Authorization: Bearer <token>"

This endpoint takes no parameters.

Success.


Get details about a specific rental.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/rentals/507f1f77bcf86cd799439320" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
idpathstringYesRental ID

Success.


Extend an existing rental for additional days.

Terminal window
curl -X POST "https://api.hoody.icu/api/v1/rentals/507f1f77bcf86cd799439320/extend" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"expected_rental_end": "2025-01-28T22:00:00.000Z",
"additional_days": 7,
"max_charge_cents": 9500
}'
NameInTypeRequiredDescription
idpathstringYesRental ID
FieldTypeRequiredDescription
expected_rental_endstringYesThe rental’s CURRENT rental_end, exactly as the API returned it. The extension is applied only if it still matches.
additional_daysintegerYesNumber of additional days to extend (must match server pricing durations, max 3650).
max_charge_centsintegerNoThe total you confirmed, in whole cents. The extension is refused if it would cost more. Required when the rental has no frozen renewal price.

Get live runtime info for a rented server or subserver. Served from a short-TTL cache so it can be polled frequently. First-party JWT only. Physical scope requires the server to have no subservers; a shared/system host returns 409. Subserver scope may be disabled on this deployment.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/rentals/507f1f77bcf86cd799439320/runtime" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
idpathstringYesRental ID

Alias for /api/v1/rentals/{id}/runtime. Returns live runtime info for the server by rental/alias ID.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/servers/507f1f77bcf86cd799439320/runtime" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
idpathstringYesServer/Rental ID

Pools let you group servers and teammates. Every authenticated user has at least one default pool. Pools have three roles: owner, admin, and user. New invitations can only be granted admin or user; owners cannot be invited.

List pools the user owns or is a member of.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/pools" \
-H "Authorization: Bearer <token>"

This endpoint takes no parameters.

Success.


Get detailed information about a specific pool, including its members and the servers assigned to it.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/pools/507f1f77bcf86cd799439300" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
idpathstringYesPool ID

Success.


Create a new pool for team collaboration.

Terminal window
curl -X POST "https://api.hoody.icu/api/v1/pools" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Production Team",
"description": "Pool for production environment management",
"settings": { "auto_approve": true, "max_servers": 20 }
}'

This endpoint takes no path, query, or header parameters.

FieldTypeRequiredDescription
namestringYesPool name. Max length: 100 characters.
descriptionstringNoPool description. Max length: 500 characters.
settingsobjectNoArbitrary pool-level settings.

Pool created successfully.


Update pool details (owner only).

Terminal window
curl -X PUT "https://api.hoody.icu/api/v1/pools/507f1f77bcf86cd799439301" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"description": "Updated pool description",
"settings": { "auto_approve": true, "max_servers": 50 }
}'
NameInTypeRequiredDescription
idpathstringYesPool ID
FieldTypeRequiredDescription
descriptionstringNoNew pool description. Max length: 500 characters.
settingsobjectNoNew pool-level settings.

Pool updated successfully.


Delete a pool. Owner only; the default pool cannot be deleted.

Terminal window
curl -X DELETE "https://api.hoody.icu/api/v1/pools/507f1f77bcf86cd799439301" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
idpathstringYesPool ID

Pool deleted successfully.


Invite a user to join the pool. Admin or above required.

Terminal window
curl -X POST "https://api.hoody.icu/api/v1/pools/507f1f77bcf86cd799439300/members" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"username": "jane_admin",
"role": "admin"
}'
NameInTypeRequiredDescription
idpathstringYesPool ID
FieldTypeRequiredDescription
usernamestringYesUsername of the user to invite. Must match ^[a-zA-Z0-9_-]+$. Length: 1–100 characters.
rolestringYesRole to grant. Allowed values: admin, user.

Member invited successfully.


Update a member’s role in the pool. Owner only.

Terminal window
curl -X PUT "https://api.hoody.icu/api/v1/pools/507f1f77bcf86cd799439300/members/507f1f77bcf86cd799439311" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "role": "user" }'
NameInTypeRequiredDescription
idpathstringYesPool ID
userIdpathstringYesUser ID
FieldTypeRequiredDescription
rolestringYesNew role. Allowed values: admin, user.

Member role updated successfully.


DELETE /api/v1/pools/{id}/members/{userId}

Section titled “DELETE /api/v1/pools/{id}/members/{userId}”

Remove a member from the pool. Admin or above required.

Terminal window
curl -X DELETE "https://api.hoody.icu/api/v1/pools/507f1f77bcf86cd799439300/members/507f1f77bcf86cd799439311" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
idpathstringYesPool ID
userIdpathstringYesUser ID

Member removed successfully.


List all pending pool invitations for the authenticated user.

Terminal window
curl -X GET "https://api.hoody.icu/api/v1/pools/invitations/pending" \
-H "Authorization: Bearer <token>"

This endpoint takes no parameters.

Success.


Accept an invitation to join a pool.

Terminal window
curl -X POST "https://api.hoody.icu/api/v1/pools/507f1f77bcf86cd799439340/accept" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
idpathstringYesInvitation ID

Invitation accepted successfully.


Reject an invitation to join a pool.

Terminal window
curl -X POST "https://api.hoody.icu/api/v1/pools/507f1f77bcf86cd799439340/reject" \
-H "Authorization: Bearer <token>"
NameInTypeRequiredDescription
idpathstringYesid path parameter

Invitation rejected successfully.