$ curl -s 1vps.com/api/index.json

1VPS Developer Portal

The 1VPS provider dataset, guide index, and workload recommendations are published as a public, read-only JSON API. No API key, no signup, no quota form — just fetch it. Everything below is versioned 2026-02-06.

// quickstart

~/quickstart.sh
# Every provider we review, with pricing and plans
curl -s https://1vps.com/api/providers.json

# One provider
curl -s https://1vps.com/api/providers/hostinger.json

# The machine-readable contract
curl -s https://1vps.com/openapi.json

# Any article as raw markdown
curl -s -H 'Accept: text/markdown' https://1vps.com/

// endpoints

OperationEndpointReturns
getApiIndexGET /api/index.jsonDiscovery document listing every endpoint, the spec, and the rate limit.
listProvidersGET /api/providers.jsonAll reviewed VPS providers with ratings, entry pricing, plans, and verdicts.
getProviderGET /api/providers/{providerId}.jsonOne provider by stable id. Returns 404 with a JSON error envelope if unknown.
listGuidesGET /api/guides.jsonIndex of every published guide, with both HTML and raw-markdown URLs.
listUseCasesGET /api/use-cases.jsonWorkload profiles with minimum specs and recommended providers.

Provider ids currently served: hostinger, digitalocean, vultr, hetzner, linode, contabo, ovh, racknerd. Pricing last verified 2026-02-06.

// authentication

There is none. Every endpoint is public, unauthenticated, and served as a static document from the edge. Send no credentials; we will never ask for any. CORS is open (Access-Control-Allow-Origin: *), so browser-side agents can call it directly.

// rate limits

600 requests per 60 seconds per client. Every response carries the RFC 9331 headers so you can self-throttle without guessing:

  • RateLimit-Limit — quota for the window
  • RateLimit-Remaining — requests left
  • RateLimit-Reset — seconds until reset
  • RateLimit-Policy — e.g. 600;w=60
  • Retry-After — sent with every 429

// errors

Failures under /api/ always return JSON, never an HTML error page. The envelope is stable: a machine-readable code, a human message, the status, and a resolution telling you what to do next.

404
{
  "error": {
    "code": "not_found",
    "message": "No API resource matches /api/providers/nope.json.",
    "status": 404,
    "resolution": "List available endpoints at https://1vps.com/api/index.json.",
    "documentation": "https://1vps.com/developers/"
  }
}

// mcp server

The same dataset is exposed over the Model Context Protocol at https://1vps.com/mcp, Streamable HTTP transport, no authentication. Point Claude, ChatGPT, or any MCP client at it and the tools below become callable. The server card carries the full manifest.

~/.config/mcp.json
{
  "mcpServers": {
    "1vps": {
      "type": "http",
      "url": "https://1vps.com/mcp"
    }
  }
}
ToolReturns
list_vps_providersEvery reviewed provider with rating, entry price, and plan matrix.
get_vps_providerOne provider by stable id, with verdict, plans, and review URL.
find_vps_plansPlans meeting a RAM, disk, and budget constraint, cheapest first.
recommend_vps_for_workloadMinimum and recommended spec for a workload, plus who to buy it from.
search_guidesFull-text search across every published guide and review.
get_guideThe full text of one guide as markdown, by slug.

// conventions

Versioning & deprecation

Responses carry an `X-API-Version` header and a `version` field holding the dataset date. The URL scheme is unversioned because the API is additive-only: new fields may appear, existing fields never change meaning or type. If a field must ever be withdrawn it will be announced here and kept serving for at least 180 days, with a `Deprecation` and `Sunset` header on the affected responses in the meantime.

Pagination

None of the collections paginate. Every list endpoint returns its complete result set with a `count` field, because the largest — the guide index — is a few hundred entries. If a collection ever outgrows a single response it will gain a cursor-based `next` link rather than page numbers, so existing callers keep working.

Idempotency

Every operation is a GET and therefore naturally idempotent: repeating a request has no effect beyond returning the same document. There are no writes, so there is no `Idempotency-Key` header to send — retry freely after a network failure or a 429.

Sandbox & testing

Production is the sandbox. The API is read-only, unauthenticated, and free, so there is no separate test host, no test credentials, and no way to mutate anything by calling it. Point integration tests straight at https://1vps.com and stay inside the rate limit.

// terms

The dataset is published under CC BY 4.0— use it, redistribute it, build on it, but credit 1VPS.com. Prices and specs are verified by hand and change often; treat lastUpdated as authoritative and re-fetch rather than caching indefinitely. Affiliate URLs in the dataset are tracked links that earn 1VPS a commission, disclosed in our disclaimer. Questions, corrections, or a provider you want added:[email protected].