Start a conversation

CloudFix API - Endpoint Summary

Base URL: https://app.cloudfix.com/api/v3


This summary focuses on typical workflows: retrieving and grouping recommendations, acting on them, and reporting.

Authentication

  • Most endpoints require an Authorization header.

  • Supported formats:

    • Authorization: Bearer 

    • Authorization: api-token 

    • Authorization: cft_

  • API tokens can be created in the CloudFix UI (Settings/API) or via POST /api/v3/tokens.


Public endpoints (no auth required):


  • POST /api/v3/auth/login

curl -s -X POST "https://app.cloudfix.com/api/v3/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"username":"[email protected]","password":"YOUR_PASSWORD"}'


  • POST /api/v3/auth/refresh

curl -s -X POST "https://app.cloudfix.com/api/v3/auth/refresh" \
  -H "Content-Type: application/json" \
  -d '{"refreshToken":"<refresh_token>"}'


  • GET /api/v3/reports/view/{hash}

curl -s "https://app.cloudfix.com/api/v3/reports/view/<hash>"


Recommendations (find, group, act)

  • GET /api/v3/recommendations - list recommendations, examples

curl -s "https://app.cloudfix.com/api/v3/recommendations?pageNumber=1&pageLimit=10" \
  -H "Authorization: Bearer <token>"
 curl -s "https://app.cloudfix.com/api/v3/recommendations?finderFixerId=EbsDeleteOldVolumeSnapshots&pageNumber=1&pageLimit=10" \
  -H "Authorization: Bearer <token>"
 curl -s "https://app.cloudfix.com/api/v3/recommendations?finderFixerId=EbsDeleteOldVolumeSnapshots&filterBy=accountId&filterValue=123456789012&pageNumber=1&pageLimit=10" \               
    -H "Authorization: Bearer <token>"   
curl -s "https://app.cloudfix.com/api/v3/recommendations/summary?account=123456789012" \
  -H "Authorization: Bearer <token>"
  • GET /api/v3/recommendations/summary - grouped summary by type

curl -s "https://app.cloudfix.com/api/v3/recommendations/summary" \
  -H "Authorization: Bearer <token>"


  • GET /api/v3/recommendations/summary-filters - valid OU/account/region/tag filters

curl -s "https://app.cloudfix.com/api/v3/recommendations/summary-filters" \
  -H "Authorization: Bearer <token>"


  • POST /api/v3/recommendations/postpone - snooze recommendations

curl -s -X POST "https://app.cloudfix.com/api/v3/recommendations/postpone" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"recommendationIds":["rec-123"],"postponeUntil":1735689600000,"reason":"Quarterly review"}'


  • POST /api/v3/recommendations/manual-fix - mark recommendations manually fixed

curl -s -X POST "https://app.cloudfix.com/api/v3/recommendations/manual-fix" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"recommendationIds":["rec-123"]}'

Execute or schedule changes

  • POST /api/v3/create-change-requests - create change requests for recommendation IDs

curl -s -X POST "https://app.cloudfix.com/api/v3/create-change-requests" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"recommendationIds":["rec-123"],"executeOnSchedule":true}'


  • GET /api/v3/fixers/execution-schedule - view fixer schedule

curl -s "https://app.cloudfix.com/api/v3/fixers/execution-schedule" \
  -H "Authorization: Bearer <token>"


  • POST /api/v3/fixers/execution-schedule - update fixer schedule

curl -s -X POST "https://app.cloudfix.com/api/v3/fixers/execution-schedule" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"fixerExecutionSchedule":"cron(0 2 * * ? *)"}'

Reports and savings

  • GET /api/v3/recommendations/report - fetch a recommendation report by ID

curl -s "https://app.cloudfix.com/api/v3/recommendations/report?recommendationId=rec-123" \
  -H "Authorization: Bearer <token>"


  • POST /api/v3/shared-reports - create a shareable report link

curl -s -X POST "https://app.cloudfix.com/api/v3/shared-reports" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"recommendationId":"rec-123"}'


  • GET /api/v3/shared-reports/{hash} - fetch a shared report

curl -s "https://app.cloudfix.com/api/v3/shared-reports/<hash>" \
  -H "Authorization: Bearer <token>"


  • GET /api/v3/report/savings - tenant savings report

curl -s "https://app.cloudfix.com/api/v3/report/savings" \
  -H "Authorization: Bearer <token>"


  • GET /api/v3/report/realized-savings - realized savings report

curl -s "https://app.cloudfix.com/api/v3/report/realized-savings" \
  -H "Authorization: Bearer <token>"


  • GET /api/v3/savings/history - savings history

curl -s "https://app.cloudfix.com/api/v3/savings/history" \
  -H "Authorization: Bearer <token>"


  • POST /api/v3/report/cost-ranking - cost ranking

curl -s -X POST "https://app.cloudfix.com/api/v3/report/cost-ranking" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"from":"2024-01-01","to":"2024-12-31"}'

Integrations

  • GET /api/v3/events/webhook - list webhooks

curl -s "https://app.cloudfix.com/api/v3/events/webhook" \
  -H "Authorization: Bearer <token>"


  • POST /api/v3/events/webhook - create/update webhook

curl -s -X POST "https://app.cloudfix.com/api/v3/events/webhook" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"name":"order-updates","url":"https://example.com/webhook","secret":"supersecretkey","active":true}'


  • DELETE /api/v3/events/webhook - delete webhook

curl -s -X DELETE "https://app.cloudfix.com/api/v3/events/webhook?name=order-updates" \
  -H "Authorization: Bearer <token>"


  • POST /api/v3/events/webhook/update-external-id - update external id

curl -s -X POST "https://app.cloudfix.com/api/v3/events/webhook/update-external-id" \
  -H "Content-Type: application/json" \
  -d '{"externalId":"EXT-123","recommendationId":"rec-123"}'


  • GET /api/v3/integrations/email - list email integrations

curl -s "https://app.cloudfix.com/api/v3/integrations/email" \
  -H "Authorization: Bearer <token>"


  • POST /api/v3/integrations/email - create email integration

curl -s -X POST "https://app.cloudfix.com/api/v3/integrations/email" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","categories":["category1","category2"]}'


  • PUT /api/v3/integrations/email/{emailIntegrationId} - update email integration

curl -s -X PUT "https://app.cloudfix.com/api/v3/integrations/email/123" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","categories":["category1","category2"]}'


  • DELETE /api/v3/integrations/email/{emailIntegrationId} - delete email integration

curl -s -X DELETE "https://app.cloudfix.com/api/v3/integrations/email/123" \
  -H "Authorization: Bearer <token>"


  • POST /api/v3/integrations/email/sync - sync email integrations

curl -s -X POST "https://app.cloudfix.com/api/v3/integrations/email/sync" \
  -H "Authorization: Bearer <token>"

Not in scope for the API

  • UI rendering and export features (charts, PDF exports, report layout)

  • Viewer-only presentation behavior for shared reports

  • One-click UI execution controls beyond the change-request and scheduling endpoints

  • Client-side analytics and telemetry

Persistence Notes

  • Configuration, recommendations, and reports are stored server-side in CloudFix services.

  • Token lifecycle and revocation are handled by the backend.

  • Exact data retention is plan- and policy-dependent; contact CloudFix Support for retention details.



Choose files or drag and drop files
Was this article helpful?
Yes
No
  1. Bill Gleeson

  2. Posted
  3. Updated

Comments