Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/archera-commitment-plans-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
openapi: 3.2.0
info:
description: '### Welcome to the Archera.ai API documentation.
Archera.ai empowers organizations to optimize cloud costs and automate cloud financial operations. Our API enables seamless integration with your internal tools, workflows, and reporting systems. With this API, you can programmatically access commitment plans, metrics, and more, unlocking the full potential of your cloud data.
Whether you''re building custom dashboards, automating cost management, or integrating with third-party platforms, the Archera.ai API provides secure and reliable endpoints to help you achieve your goals.
If you have questions or need support, please contact our team at support@archera.ai.
## API Key Access
To use this API, you need an API key.
### How to Create an API Key
1. Log in to the Archera.ai web application.
2. Navigate to **User Settings > API Access**.
<a href="https://app.archera.ai/settings?tab=api§ion=user" target="_blank" rel="noopener noreferrer">Open Settings</a>
3. Click **Create New API Key**.
4. Copy and securely store your new API key.
### How to Use Your API Key
Use the `x-api-key` header:
```bash
curl -H ''x-api-key: YOUR_API_KEY'' https://api.archera.ai/v1/org/{org_id}/metrics?provider=aws
```
Keep your API key secure. If you believe your key has been compromised, deactivate it in the web application and generate a new one.
### How to find your Organization ID
1. Log in to the Archera.ai web application.
2. Navigate to **User Settings > Organization**.
3. Your Organization ID is displayed at the top of the page. You can also find it in the URL when visiting the Archera app `&orgId=<org_id>`
'
title: Archera.ai Commitment Plans API
version: v1.0.0
servers:
- url: https://api.archera.ai
description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Commitment Plans
description: API for managing commitment plans
paths:
/v1/org/{org_id}/commitment-plans/{plan_id}:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
- in: path
name: plan_id
required: true
schema:
type: string
format: uuid
get:
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CommitmentPlan'
'404':
description: Not Found
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/{plan_id}
description: Retrieves detailed information about a specific commitment plan, including costs, savings projections, and commitment coverage.
/v1/org/{org_id}/commitment-plans/{plan_id}/apply:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
- in: path
name: plan_id
required: true
schema:
type: string
format: uuid
post:
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CommitmentPlan'
'404':
description: Not Found
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/{plan_id}/apply
description: Executes a commitment purchase plan, initiating the commitment purchase process. This action will mark the plan as edited and record the user who initiated the purchase. The plan will then be processed for actual commitment purchases according to the plan specifications.
/v1/org/{org_id}/commitment-plans/default:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
get:
parameters:
- in: query
name: provider
description: Cloud provider to get default plans for
schema:
type: string
enum:
- aws
- azure
- gcp
example: aws
required: true
responses:
'422':
$ref: '#/components/responses/UNPROCESSABLE_CONTENT'
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CommitmentPlan'
example:
- id: 11111111-1111-1111-1111-111111111111
name: Recommended
description: string
org_id: a40f5d1f-d889-42e9-94ea-b9b33585fc6b
created_at: '2025-06-01T08:00:00Z'
is_calculating: false
status: active
max_term: string
covered_ondemand_cost_hourly: 3.21
before_ondemand_cost_hourly: 4.56
before_reserved_cost_hourly: 0.0
amortized_cost_hourly: 2.98
recurring_cost_hourly: 0.23
upfront_cost_hourly: 0.0
before_cost_hourly: 4.56
after_cost_hourly: 3.21
total_cost_hourly: 3.44
savings_hourly: 1.12
fee_hourly: 0.1
commitment_coverage: 0.7
minimum_commitment_cost: 1200
breakeven_hours: 300
total_savings: 980
monthly_savings: 82
total_monthly_before_cost: 330
- id: 22222222-2222-2222-2222-222222222222
name: Balanced
description: string
org_id: a40f5d1f-d889-42e9-94ea-b9b33585fc6b
created_at: '2025-06-01T08:00:00Z'
is_calculating: false
status: active
max_term: string
covered_ondemand_cost_hourly: 4.85
before_ondemand_cost_hourly: 6.5
before_reserved_cost_hourly: 0.0
amortized_cost_hourly: 3.75
recurring_cost_hourly: 0.54
upfront_cost_hourly: 0.0
before_cost_hourly: 6.5
after_cost_hourly: 4.29
total_cost_hourly: 4.83
savings_hourly: 1.67
fee_hourly: 0.15
commitment_coverage: 0.85
minimum_commitment_cost: 2000
breakeven_hours: 450
total_savings: 1460
monthly_savings: 122
total_monthly_before_cost: 440
- id: 33333333-3333-3333-3333-333333333333
name: High Savings
description: string
org_id: a40f5d1f-d889-42e9-94ea-b9b33585fc6b
created_at: '2025-06-01T08:00:00Z'
is_calculating: false
status: active
max_term: string
covered_ondemand_cost_hourly: 7.25
before_ondemand_cost_hourly: 8.9
before_reserved_cost_hourly: 0.0
amortized_cost_hourly: 5.1
recurring_cost_hourly: 0.85
upfront_cost_hourly: 0.0
before_cost_hourly: 8.9
after_cost_hourly: 5.95
total_cost_hourly: 6.8
savings_hourly: 2.1
fee_hourly: 0.25
commitment_coverage: 0.95
minimum_commitment_cost: 3500
breakeven_hours: 620
total_savings: 2540
monthly_savings: 220
total_monthly_before_cost: 650
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/default
description: Retrieves the three default Archera commitment plans (High Savings, Balanced, Recommended) for the specified cloud provider. These plans are automatically generated based on the organization's usage patterns. Each plan offers different trade-offs between cost savings and flexibility.
/v1/org/{org_id}/commitment-plans/recommended:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
get:
parameters:
- in: query
name: provider
description: Cloud provider to get the recommended plan for
schema:
type: string
enum:
- aws
- azure
- gcp
example: aws
required: true
responses:
'422':
$ref: '#/components/responses/UNPROCESSABLE_CONTENT'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CommitmentPlan'
'204':
description: No Content
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/recommended
description: Retrieves only the recommended Archera commitment plan for the specified cloud provider. This is the optimal plan automatically selected based on the organization's usage patterns, balancing cost savings with flexibility. Returns a 204 No Content response if no recommended plan is available for the specified provider.
/v1/org/{org_id}/commitment-plans/{plan_id}/line-items:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
- in: path
name: plan_id
required: true
schema:
type: string
format: uuid
get:
parameters:
- in: query
name: order_by
description: Field to order results by
schema:
type:
- string
- 'null'
default: id
enum:
- id
- plan_id
- offer_id
- account_id
- amortized_cost
- upfront_cost
- recurring_cost
- total_cost
- savings
- fee
- covered_ondemand_cost
- before_ondemand_cost
- before_reserved_cost
- covered_units
- before_cost
- monthly_savings
- breakeven_hours
- discount_rate
- monthly_cost
- selected_quantity
- null
- offer.type
- offer.duration_seconds
example: created_at
required: false
- in: query
name: desc
description: Sort in descending order if true
schema:
type:
- boolean
- 'null'
default: null
example: 'true'
required: false
- in: query
name: segment_id
description: Filter line items by segment ID
schema:
type: string
example: 550e8400-e29b-41d4-a716-446655440000
required: false
- in: query
name: resource_match_ids
description: Filter line items by specific resource match IDs
schema:
type: array
example:
- 550e8400-e29b-41d4-a716-446655440000
- 6ba7b810-9dad-11d1-80b4-00c04fd430c8
items:
type: string
format: uuid
required: false
explode: true
style: form
- in: query
name: page
schema:
type: integer
default: 1
minimum: 1
required: false
- in: query
name: page_size
schema:
type: integer
default: 20
minimum: 1
maximum: 100
required: false
responses:
'422':
$ref: '#/components/responses/UNPROCESSABLE_CONTENT'
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CommitmentPlanLineItem_Exclude_CoveredServices'
headers:
X-Pagination:
$ref: '#/components/headers/PAGINATION'
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/{plan_id}/line-items
description: Retrieves line items for a specific commitment plan, including offer details, costs, and savings information. Line items represent individual commitment purchases within the plan.
/v1/org/{org_id}/commitment-plans/{plan_id}/resource-matches:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
- in: path
name: plan_id
required: true
schema:
type: string
format: uuid
get:
parameters:
- in: query
name: order_by
description: Field to order results by
schema:
type:
- string
- 'null'
default: covered_ondemand_cost
enum:
- id
- unmatched_units
- total_units
- ondemand_price
- reserved_cost
- explanation_unmatched
- coverage
- ondemand_cost
- covered_ondemand_cost
- before_cost
- after_cost
- covered_units
- average_savings
- average_monthly_savings
- monthly_after_cost
- null
required: false
- in: query
name: desc
description: Sort in descending order if true
schema:
type: boolean
default: true
required: false
- in: query
name: start_date
description: Start date for resource usage data
schema:
type: string
format: date
example: '2024-01-01'
required: true
- in: query
name: end_date
description: End date for resource usage data
schema:
type: string
format: date
example: '2024-01-31'
required: true
- in: query
name: line_item_ids
description: Filter by specific line item IDs
schema:
type: array
example:
- 550e8400-e29b-41d4-a716-446655440000
items:
type: string
format: uuid
required: false
explode: true
style: form
- in: query
name: page
schema:
type: integer
default: 1
minimum: 1
required: false
- in: query
name: page_size
schema:
type: integer
default: 20
minimum: 1
maximum: 100
required: false
responses:
'422':
$ref: '#/components/responses/UNPROCESSABLE_CONTENT'
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CommitmentPlanResourceMatch'
headers:
X-Pagination:
$ref: '#/components/headers/PAGINATION'
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/{plan_id}/resource-matches
description: Retrieves resource matches for a specific commitment plan, showing how resources map to commitment purchases with cost and usage details.
/v1/org/{org_id}/commitment-plans/{plan_id}/comparison:
parameters:
- in: path
name: org_id
required: true
schema:
type: string
format: uuid
- in: path
name: plan_id
required: true
schema:
type: string
format: uuid
get:
parameters:
- in: query
name: line_item_ids
description: Optional subset of line items to compare. If omitted, defaults to all selected line items in the plan.
schema:
type:
- array
- 'null'
default: null
items:
type: string
format: uuid
required: false
explode: true
style: form
- in: query
name: contract_terms
description: Optional list of target terms to roll up. If omitted, the response includes a hypothetical for every distinct contract_term that appears in any line item's candidates after the payment-option filter.
schema:
type:
- array
- 'null'
default: null
items:
type: string
enum:
- one_year_gris
- thirty_day_gris
- two_month_gris
- three_month_gris
- four_month_gris
- five_month_gris
- six_month_gris
- seven_month_gris
- eight_month_gris
- nine_month_gris
- ten_month_gris
- eleven_month_gris
- twelve_month_gris
- thirteen_month_gris
- fourteen_month_gris
- fifteen_month_gris
- sixteen_month_gris
- seventeen_month_gris
- eighteen_month_gris
- nineteen_month_gris
- twenty_month_gris
- twenty_one_month_gris
- twenty_two_month_gris
- twenty_three_month_gris
- twenty_four_month_gris
- twenty_five_month_gris
- twenty_six_month_gris
- twenty_seven_month_gris
- twenty_eight_month_gris
- twenty_nine_month_gris
- thirty_month_gris
- thirty_one_month_gris
- thirty_two_month_gris
- thirty_three_month_gris
- thirty_four_month_gris
- thirty_five_month_gris
- one_year
- two_year
- three_year
- five_year
- zero_day
- thirty_day
- two_month
- three_month
- four_month
- five_month
- six_month
- seven_month
- eight_month
- nine_month
- ten_month
- eleven_month
- thirteen_month
- fourteen_month
- fifteen_month
- sixteen_month
- seventeen_month
- eighteen_month
- nineteen_month
- twenty_month
- twenty_one_month
- twenty_two_month
- twenty_three_month
- twenty_five_month
- twenty_six_month
- twenty_seven_month
- twenty_eight_month
- twenty_nine_month
- thirty_month
- thirty_one_month
- thirty_two_month
- thirty_three_month
- thirty_four_month
- thirty_five_month
required: false
explode: true
style: form
- in: query
name: payment_options
description: Payment options to include. Defaults to no_upfront only — most users are uncomfortable with cash at signing, so this matches the default framing for plan comparisons. Pass partial_upfront / all_upfront explicitly to surface those.
schema:
type: array
items:
type: string
enum:
- no_upfront
- partial_upfront
- all_upfront
required: false
explode: true
style: form
responses:
'422':
$ref: '#/components/responses/UNPROCESSABLE_CONTENT'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LineItemOfferComparisonResponse'
'400':
description: Bad Request
'404':
description: Not Found
default:
$ref: '#/components/responses/DEFAULT_ERROR'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'405':
description: Method not allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
tags:
- Commitment Plans
summary: /commitment-plans/{plan_id}/comparison
description: 'Returns per-line-item offer alternatives plus plan-wide rollups for each (contract_term, payment_option) hypothetical. Designed to answer ''what would the plan look like at 3-year'' in a single call: hypothetical_totals carries the rolled-up financials and delta_vs_current, with per-line-item resolution exposed for transparency. Each line item lands at the target term when available, else the longest available term <= target with the same payment option (GRI preferred within tier), else its current term. Defaults: line_item_ids=all selected, contract_terms=all distinct in candidates, payment_options=[no_upfront].'
components:
schemas:
LineItemOfferComparisonResponse:
type: object
properties:
current_totals:
description: Plan-wide totals for the line items currently in scope (defaults to all selected, narrowed by line_item_ids if provided). Use this as the baseline when interpreting hypothetical deltas.
$ref: '#/components/schemas/LineItemOfferComparisonTotals'
hypothetical_totals:
type: array
description: One entry per (contract_term, payment_option) combination requested (or per distinct term present in candidates if contract_terms was omitted). Each entry's totals + delta_vs_current answer 'what's the plan-wide impact of this term?' in one place — no client-side summing across line items required.
items:
$ref: '#/components/schemas/HypotheticalTotal'
data:
type: array
description: Per-line-item detail. Use when the user wants to drill into 'why does RDS not have a 3-year candidate' or to assemble an update payload.
items:
$ref: '#/components/schemas/LineItemOfferComparisonRow'
required:
- current_totals
- data
- hypothetical_totals
additionalProperties: false
ApiErrorResponse:
type: object
properties:
message:
type: string
detail: {}
code:
type:
- string
- 'null'
url:
type:
- string
- 'null'
timestamp:
type: string
type:
type: string
required:
- message
- timestamp
- type
CommitmentOffer:
type: object
properties:
id:
type: string
format: uuid
description: Offer identifier
provider:
description: Cloud provider (aws, azure, gcp)
type: string
enum:
- aws
- azure
- gcp
type:
type: string
description: Commitment type (e.g. 'ri', 'savings_plan', 'cud')
region:
type:
- string
- 'null'
description: Cloud region (e.g. 'us-east-1')
duration_seconds:
type: integer
description: Total commitment duration in seconds
instance_type:
type:
- string
- 'null'
description: Instance type (e.g. 'm5.xlarge'), null for Savings Plans
instance_family:
type:
- string
- 'null'
description: Instance family (e.g. 'm5'), null for some commitment types
offering_class:
description: Offering class (e.g. 'standard', 'convertible')
type:
- string
- 'null'
enum:
- standard
- convertible
- null
payment_option:
description: Payment option (e.g. 'no_upfront', 'partial_upfront', 'all_upfront')
type:
- string
- 'null'
enum:
- no_upfront
- partial_upfront
- all_upfront
- null
plan_type:
type:
- string
- 'null'
description: Plan type (e.g. 'Compute', 'EC2Instance')
product_description:
type:
- string
- 'null'
description: Product description (e.g. 'Linux/UNIX')
display_name:
type:
- string
- 'null'
description: Human-readable offer name
guarant
# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/archera/refs/heads/main/openapi/archera-commitment-plans-api-openapi.yml