CloudYali Developer Resources
Everything you need to work with CloudYali programmatically: the CloudYali public API, its OpenAPI 3.1 specification, structured error codes, and the agent-readable endpoints this site publishes. CloudYali is a FinOps platform for cloud cost visibility and management across AWS, Azure and GCP.
Product documentation lives at docs.cloudyali.io. API keys and account settings live in the CloudYali console.
CloudYali API quickstart
The public API needs no authentication. Start from the discovery document, then load the specification.
curl https://www.cloudyali.io/api curl https://www.cloudyali.io/openapi.json curl https://www.cloudyali.io/api/v1/features
Every successful response uses the envelope { "success": true, "data": … }. Every failure uses the structured error envelope described below.
CloudYali public API endpoints
Reachable, unauthenticated endpoints served from https://www.cloudyali.io.
| Resource | Format | Description |
|---|---|---|
| /openapi.jsonOpenAPI specification (JSON) | OpenAPI 3.1 / JSON | The complete machine-readable description of the CloudYali public API. Every operation has a unique operationId, typed parameters and response schemas, so it can be loaded directly into an LLM function-calling toolchain. |
| /api/openapi.yamlOpenAPI specification (YAML) | OpenAPI 3.1 / YAML | The same specification served as YAML for tools that prefer it. |
| /apiAPI index | JSON | Discovery document listing every public CloudYali endpoint with its operation id and description. Start here. |
| /api/v1/healthService health | JSON | Liveness check for the CloudYali public API. |
| /api/v1/featuresProduct capability catalog | JSON | Every CloudYali FinOps capability with the cloud providers it covers — cost visibility, cost savings, budget management, asset inventory, tag governance, AI cost tracking and integrations. |
| /api/v1/blogsBlog post index | JSON | Paginated list of published CloudYali articles on FinOps and cloud cost management, with canonical and Markdown URLs. |
| /api/v1/blogs/aws-backup-cold-tierSingle blog post | JSON | One article by slug, including the full body rendered as Markdown. |
| /api/demo-requestDemo request | JSON | POST a DemoRequest to reach the CloudYali sales team. GET returns endpoint availability without submitting anything. |
CloudYali API authentication
The endpoints listed above are public and require no credentials. The authenticated CloudYali platform API — the one that returns your own cost, budget and inventory data — is scoped to your account and is provisioned from the CloudYali console. Contact support@cloudyali.io for access and the current endpoint reference.
CloudYali API error codes
Every non-2xx response from a CloudYali endpoint is JSON — never an HTML error page. The code field is stable and safe to branch on, and hint tells you what to do about it.
{
"success": false,
"error": {
"code": "validation_error",
"message": "Missing required field: businessEmail",
"hint": "Provide every field listed in `details.required_fields` and retry.",
"details": { "missing_fields": ["businessEmail"] },
"documentation_url": "https://www.cloudyali.io/developers",
"request_id": "3f1c9a54-6f0e-4a1e-9a2d-0b7c2f5f1a44"
}
}| Code | HTTP | Meaning |
|---|---|---|
| bad_request | 400 | A query or path parameter was malformed. |
| invalid_json | 400 | The request body was not a valid JSON object. |
| validation_error | 400 / 422 | A field failed validation. `details` names it. |
| not_found | 404 | No such endpoint or resource. |
| method_not_allowed | 405 | That HTTP method is not supported for the path. |
| rate_limited | 429 | Too many requests. Honour `Retry-After`. |
| upstream_error | 502 | A dependency failed. The request was not applied. |
| configuration_error | 500 | The endpoint is not fully configured server-side. |
| internal_error | 500 | Unexpected server error. |
CloudYali resources for AI agents
CloudYali publishes machine-readable versions of its content so agents do not have to scrape rendered HTML.
| Resource | Format | Description |
|---|---|---|
| /llms.txtllms.txt | text/plain | Condensed, LLM-friendly summary of CloudYali: what the product does, how it compares to alternatives, and where the canonical pages live. |
| /llms-full.txtllms-full.txt | text/plain | The expanded version, including the full content inventory. |
| /.well-known/agent-skills/index.jsonAgent skills manifest | JSON | Machine-readable list of the agent capabilities this site exposes, with content hashes. |
| /agent-markdown/blogsMarkdown rendering of any page | text/markdown | Prefix any CloudYali path with /agent-markdown to get a clean Markdown rendering with no navigation chrome. Requesting a page with Accept: text/markdown does the same thing. |
| /sitemap.xmlSitemap | XML | Every indexable CloudYali URL with last-modified timestamps. |
| /robots.txtrobots.txt | text/plain | Crawl policy. CloudYali explicitly allows AI crawlers and declares Content-Signal permissions. |
Using CloudYali with LLM function calling
The CloudYali OpenAPI document is written to convert cleanly into tool definitions: every operation has a unique operationId, a description written for a model rather than a human skimming docs, typed parameters with explicit bounds, and a declared response schema.
# Operation ids exposed by the CloudYali public API
getApiIndex GET /api
getServiceHealth GET /api/v1/health
listProductFeatures GET /api/v1/features
listBlogPosts GET /api/v1/blogs
getBlogPostBySlug GET /api/v1/blogs/{slug}
getDemoRequestStatus GET /api/demo-request
submitDemoRequest POST /api/demo-requestCloudYali CLI
An official CloudYali command-line tool is on the roadmap and is not yet published. Until it ships, the public endpoints above are plain HTTP and work with curl and jq, and the OpenAPI specification can be fed to a generator such as openapi-generator to produce a client in your language of choice. If a CLI would unblock you, tell us at support@cloudyali.io — it moves things up the queue.
CloudYali developer support
Questions about the CloudYali API, integrations or agent access: support@cloudyali.io. Include the request_id from any error response — it lets us find the exact request in our logs.