Rent Servers
Section titled “Rent Servers”Hoody’s bare metal marketplace rents physical servers in datacenters worldwide. A listing may carry an estimated setup time, and actual provisioning can take longer than the estimate.
Provisioning time
Section titled “Provisioning time”Traditional bare metal: Days to weeks provisioning (typically 1-7 days), manual configuration, long contracts
Hoody bare metal: listings may provide setup_time_minutes, an estimate of the time from rental to provisioning; actual setup can take longer
Automatic provisioning is what lets an AI agent manage infrastructure directly: it can rent a server through the API, with no manual configuration step on either side.
How to rent a server
Section titled “How to rent a server”-
Browse the marketplace
View available servers filtered by location, specs, and price via the Servers API.
-
Select a server
Choose based on:
- Location (datacenter proximity to users)
- Specifications (CPU, RAM, storage)
- Pricing tier (duration discounts)
-
Configure the rental
- Choose rental duration (available durations vary by offer)
- Optionally assign to a Pool
- Review and confirm pricing
-
Complete payment
Hoody deducts the server cost from your general balance and processes the payment instantly.
-
Automatic provisioning
Watch the progress: Hardware allocated → OS installed → Services initialized → Ready
-
Deploy containers
Once the server reports ready, you can create containers on it. Containers have no per-unit cost: they consume only that server’s capacity.
API Endpoints Summary
Section titled “API Endpoints Summary”Renting servers uses these endpoints:
GET /api/v1/servers/available- List marketplace inventory- Filter by location, specs, availability
- View pricing tiers and duration discounts
POST /api/v1/servers/{id}/rent- Provision a server- Specify duration and pool assignment
- Automatic payment and provisioning
- Add funds to general balance
- View transaction history
- Download invoices
Marketplace inventory
Section titled “Marketplace inventory”Hoody keeps ready-to-provision bare metal servers in datacenters worldwide. Browse them with the Servers API.
What a listing shows
Section titled “What a listing shows”Server listings include:
- Datacenter location (country, region, city)
- Hardware specifications (CPU cores, RAM, storage)
- Available rental durations
- Pricing for each duration
- Current availability status
Filter and sort by:
- Geographic location
- Hardware specifications
- Price range
- Availability
Server specifications and pricing vary by:
- Datacenter location
- Current market availability
- Rental duration selected
- Hardware tier
Rental pricing
Section titled “Rental pricing”Duration-based discounts:
Servers can be rented for as little as 1 day, and longer rental durations receive automatic discounts.
Available durations vary by server offering. Common options include daily, weekly, and monthly rentals, with best rates for longer commitments.
How billing works:
- Upfront payment: Full rental period charged when you click “Rent”
- Auto-deduction: Amount taken from your general balance via Wallet API
- Invoice generated: Automatic invoice for your records
- No usage fees: The tier price includes bandwidth and storage, and nothing is metered on top
- One-time setup fee: Some listings additionally carry a one-time setup fee (
pricing.setup_fee_cents), charged once when the rental starts and never on renewal.pricing.price_tiers[rental_days].total_first_paymentis the full amount debited on that first payment
Confirming the total: every paid rental must send max_charge_cents, a ceiling in integer cents on the total debit (rental price plus any one-time setup fee). Read it from pricing.price_tiers[rental_days].total_first_payment on the marketplace listing. Omit it and the call returns 409 CHARGE_CONFIRMATION_REQUIRED (or 409 SETUP_FEE_CONFIRMATION_REQUIRED when the server carries a setup fee) and nothing is charged. If the live total has risen above your ceiling you get 409 CHARGE_EXCEEDS_MAX instead. Re-read the listing, show the customer the new total, and retry with a ceiling they confirmed.
Rental lifecycle
Section titled “Rental lifecycle”Active rental:
- Server fully operational
- Deploy unlimited containers
- Full resource access
- Monitor usage in dashboard
Approaching expiration:
- No email reminders exist. Monitor
rental_endthrough the API or dashboard and set your own calendar alerts - Option to renew before expiration
- Manual renewal required
Grace period (hold period):
- Server remains active briefly after expiration
- Renew during this time to keep data
- No additional charges during grace period
- Length is set per server by
hold_days(commonly 1-2 days) - Hoody raises an in-app notification roughly 24h before the hold period ends. It is the only warning the platform sends, and it arrives after the rental has already expired
After the grace period:
- Server deprovisioned
- All data deleted
- Cannot be recovered
What happens during provisioning
Section titled “What happens during provisioning”A marketplace listing may carry setup_time_minutes, an estimate for the phases below rather than a guaranteed completion window.
Hardware allocation
Section titled “Hardware allocation”Hoody selects a physical server from the available pool in your chosen datacenter and reserves its resources for you alone.
OS installation
Section titled “OS installation”Custom Hoody OS deployed to bare metal:
- Optimized container runtime
- Security hardening
- Network configuration
- Storage setup
Service initialization
Section titled “Service initialization”Platform services activated:
- Container management
- Monitoring agents
- API endpoints
- Health verification
Ready to deploy
Section titled “Ready to deploy”Server status: READY
You receive:
- Dashboard update
- API webhook (if configured)
You can create containers as soon as the status is READY.
How to choose a server
Section titled “How to choose a server”Location
Section titled “Location”Latency: Place servers closest to users
Users primarily in Americas → Choose US datacentersUsers primarily in Europe → Choose EU datacentersGlobal user base → Consider multiple regional serversData residency: Compliance requirements
- GDPR compliance → EU datacenters required
- Regional regulations → Choose appropriate datacenter
- Custom requirements → Contact support
Development servers: Place development servers as close as possible to your own location. Latency shows up directly in the interactive services:
- hoody-display - Desktop environments need low latency for smooth interaction
- hoody-terminal - Command execution feels local when server is nearby
- hoody-agent - AI agent responsiveness improves with proximity
- hoody-code - VS Code instances work best with minimal network delay
Production servers should be near users. Development servers should be near developers.
Specifications
Section titled “Specifications”Container capacity varies by:
- Container resource requirements (light vs. heavy workloads)
- Server hardware specifications (check marketplace)
- Operating system overhead
- Resource sharing efficiency
General guidance:
- Lightweight containers (APIs, scripts) pack densely
- Resource-intensive containers (databases, AI) require more headroom
- Production workloads need 20-30% overhead for stability
- Monitor actual usage and adjust as needed
Budget
Section titled “Budget”Start small:
- Begin with lower-tier server to test requirements
- Monitor actual usage during first rental period
- Upgrade only when consistently hitting resource limits
Scale deliberately:
- One well-utilized server beats multiple idle servers
- Consolidate low-usage containers
- Use snapshots instead of duplicate containers
- Check marketplace for best duration pricing
Pool assignment
Section titled “Pool assignment”Every server belongs to a Pool. When renting, you can specify which Pool the server joins:
- Default Pool: If no pool is specified, the server is assigned to your personal default pool
- Team Pool: Shared access for collaborators
- Client Pool: Isolated per-client servers (agencies)
- Environment Pool: Group by dev/staging/prod
Specify pool during rental:
{ "pool_id": "507f1f77bcf86cd799439011", "rental_days": 30, "max_charge_cents": 27500}Or omit for default pool:
{ "rental_days": 30, "max_charge_cents": 27500}// Automatically assigned to your default poolmax_charge_cents is the confirmed ceiling on the total debit. Take it from pricing.price_tiers["30"].total_first_payment on the listing you picked ("275.00" becomes 27500). pool_id must name a pool you own.
The server is immediately accessible to every pool member, subject to their role.
Use Cases
Section titled “Use Cases”Solo developer experimenting
- Rent: 1 server, short duration
- Use: Test Hoody, experiment with containers
- Benefit: Low-risk trial with flexible rental periods
Startup building an MVP
- Rent: 1 mid-tier server for longer duration
- Use: Dev, staging, prod all on one server
- Benefit: Professional infrastructure, cost-effective scaling
Agency with multiple clients
- Rent: Multiple servers (one per major client)
- Use: Client isolation via dedicated servers
- Benefit: Client data separation, transparent billing
Enterprise team deploying globally
- Rent: 10+ servers distributed globally
- Use: Geographic redundancy, large container deployments
- Benefit: High availability, compliance, worldwide performance
Rental request examples
Section titled “Rental request examples”# Browse marketplace for available servers, and read the quote you are about to confirm:# pricing.price_tiers["30"].total_first_payment -> "275.00" -> 27500 centshoody servers marketplace -o json
# Rent a server (positional server ID; prompts for confirmation before charging)hoody servers rent $SERVER_ID --rental-days 30 --max-charge-cents 27500
# Non-interactive (agents, CI): -y skips the prompt. The ceiling is still required.hoody servers rent $SERVER_ID --rental-days 30 --max-charge-cents 27500 -y
# Check your rental statushoody servers listimport { HoodyClient } from 'hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://api.hoody.com', token: process.env.HOODY_TOKEN });
// Browse available serversconst available = await client.api.serverRental.browse();
// Rent a server. max_charge_cents is the confirmed ceiling on the total debit;// read it from pricing.price_tiers[rental_days].total_first_payment on the listing.const rental = await client.api.serverRental.rent(serverId, { pool_id: '507f1f77bcf86cd799439011', rental_days: 30, max_charge_cents: 27500,});
// Check rentalsconst rentals = await client.api.serverRental.list();# Browse marketplacecurl "https://api.hoody.com/api/v1/servers/available" \ -H "Authorization: Bearer $HOODY_TOKEN"
# Rent a servercurl -X POST "https://api.hoody.com/api/v1/servers/$SERVER_ID/rent" \ -H "Authorization: Bearer $HOODY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"pool_id": "507f1f77bcf86cd799439011", "rental_days": 30, "max_charge_cents": 27500}'One request, one link
cURL runs inside your container and can wrap any HTTP request into a single GET URL. The call stops being something you need a client for and becomes something you can paste into a browser, send in a chat, bookmark, schedule with cron, or drop into a no-code tool.
Nothing is installed on the machine that opens it. The link does carry whatever credentials the call needs, so treat it as you would treat those credentials.
Slashes, colons and braces pass through as they are. The one character you must
encode is an & inside a value, which happens when the wrapped URL
carries its own query string. Left raw it ends the value early, and the rest is
read as cURL's own parameters, so you get a 200 on a request you did
not make.
How the wrapping works Chaining calls into one link Turning a link into a shortcut
Two links: browse marketplace inventory, then rent a specific server with a pool assignment and a confirmed spending ceiling. Read the real max_charge_cents from the listing’s pricing.price_tiers[rental_days].total_first_payment before sending the rent request.
# Browse marketplace
https://PROJECT_ID-CONTAINER_ID-curl-1.SERVER.containers.hoody.com/api/v1/curl/request?url=https://api.hoody.com/api/v1/servers/available&method=GET&bearer_token=TOKEN&response=transparent
# Rent a server
https://PROJECT_ID-CONTAINER_ID-curl-1.SERVER.containers.hoody.com/api/v1/curl/request?url=https://api.hoody.com/api/v1/servers/SERVER_ID/rent&method=POST&bearer_token=TOKEN&json={"pool_id":"507f1f77bcf86cd799439011","rental_days":30,"max_charge_cents":27500}&response=transparent The link carries a credential and executes with it, so it is as sensitive as the credential itself — and it passes through the cURL service's request log on the way, not just the target's. Share it only where you would share the secret, and prefer a delegated token with minimal permissions and an expiry: see API tokens.
Browse marketplace:
The response lists available servers with their specs and pricing.
Rent selected server:
Set max_charge_cents to the total you actually confirmed: pricing.price_tiers[rental_days].total_first_payment from the marketplace response above, in integer cents. Without it the call returns 409 CHARGE_CONFIRMATION_REQUIRED and nothing is rented.
Response includes:
- Rental details (
id,server_id,rental_start,rental_end,hold_days,actual_usage_days,status) - Transaction details (
id,amount,currency)
Monitor provisioning:
Poll server status until ready, then deploy containers via Container API.
Best Practices
Section titled “Best Practices”Before renting:
- Estimate container needs (multiply by 1.5 for headroom)
- Choose location closest to users
- Verify sufficient balance in wallet
- Decide on pool assignment
During the rental:
- Monitor resource usage weekly
- Delete unused containers promptly
- Document what’s running on each server
- Set renewal reminders
Renewal strategy:
- Set calendar reminders for expiration dates
- Review usage before renewing
- Consider switching tiers if consistently over/under-utilized
- Plan ahead instead of waiting until the last day
Cost optimization:
- Longer rentals = better rates (30-day vs 1-day)
- Consolidate containers to fewer servers
- Use snapshots instead of keeping idle containers
- Delete experiments promptly
Security:
- Different servers for different security zones
- Production servers in dedicated pools
- Regular security audits via server commands
- Enable appropriate firewall rules
Useful Questions
Section titled “Useful Questions”How quickly can I get a bare metal server?
A marketplace listing may provide setup_time_minutes, its estimate of provisioning time; in-stock machines can take longer than that estimate. Check server status while provisioning and follow the troubleshooting guidance below if it runs long. Traditional bare metal providers manually provision, which typically takes 1-7 days.
What if the server I want is unavailable?
Check nearby datacenters or different tiers. High demand in one location doesn’t affect others. If you need specific specs not in marketplace, contact support for custom provisioning (longer lead time).
Can I upgrade a server after renting?
Not directly; a server is a fixed specification. You can rent a higher-tier server, copy your containers over using container copy/sync, then let the original rental lapse (there is no cancellation, and no refund for unused time). This is usually completed the same day.
What happens if I run out of balance mid-rental?
Your active rental continues because it is already paid. You cannot rent additional servers or renew expiring ones until you add funds to your wallet.
Can I cancel early or get a refund?
No. There is no cancellation endpoint. A rental runs to its rental_end, enters the hold period, and is then deprovisioned unless you renew. There are no refunds for unused rental time (standard hosting practice); the server and resources were reserved for you. Plan rental duration carefully, and start with shorter periods if you are uncertain.
Do rentals auto-renew?
No, rentals do not auto-renew. Servers expire at end of rental period unless you manually renew. Hoody sends no reminder emails, so set your own calendar alerts for critical servers to avoid accidental expiration.
What’s included in the rental price?
The tier price covers hardware, bandwidth, storage, platform services, monitoring, and support, and nothing is metered on top. Some listings additionally carry a one-time setup fee (pricing.setup_fee_cents) charged once when the rental starts; pricing.price_tiers[days].total_first_payment is the full first payment. Beyond that, the only additional costs are optional services like extra storage shares or premium support packages.
Troubleshooting
Section titled “Troubleshooting”Payment fails during rental
Cause: Insufficient balance or payment method issue
Solution: Add funds to general balance via Wallet API. Ensure payment method is valid. Once the balance is sufficient, retry the rental; your server selection remains available.
Provisioning stuck at “Hardware Allocation”
Cause: High demand in that specific datacenter
Solution: Wait 2-3 more minutes, since allocation sometimes retries. After 10 minutes, try a different datacenter or tier. Contact support if the issue persists.
Server shows “Ready” but containers won’t deploy
Cause: Post-provisioning services still initializing
Solution: Wait 1-2 more minutes for complete startup. Check server logs in dashboard. Verify you have permission to deploy to this server (pool role). If the issue continues, contact support.
Rented server does not appear in the dashboard
Cause: Browser cache or sync delay
Solution: Hard refresh (Ctrl+F5). Verify the transaction in Wallet history. If the payment processed but the server is still missing after 15 minutes, contact support.
Server was allowed to expire
Cause: Missed renewal deadline
Solution: If the server is still in its grace period, renew immediately to restore access. If it is already deprovisioned, the data is gone: rent a new server and redeploy from backups or snapshots. To prevent it, set multiple calendar reminders and monitor expiration dates closely.
What’s Next
Section titled “What’s Next”After the server is ready:
- Projects & Containers → - Start deploying containers
- Container Lifecycle → - Create your first containers
Team collaboration:
- Share Servers → - Organize with Pools
Manage your infrastructure:
- Manage Your Servers → - Overview of server management
- Server Management API → - Complete API reference
- Wallet → - Manage payments and billing