openapi: 3.2.0
info:
title: Ghost Pricing API
version: 0.1.0
description: Ghost database management API
servers:
- url: https://api.ghost.build/v0
description: Production
security:
- BearerAuth: []
tags:
- name: Pricing
paths:
/pricing:
get:
operationId: getPricing
summary: Get pricing
description: 'Returns current pricing.
This endpoint is unauthenticated.
'
security: []
responses:
'200':
description: Pricing
content:
application/json:
schema:
$ref: '#/components/schemas/Pricing'
default:
$ref: '#/components/responses/Error'
tags:
- Pricing
components:
schemas:
ErrorCode:
type: string
description: 'Machine-readable error code identifying a specific, client-actionable
error condition. Clients can match on this to react to specific errors
without parsing the human-readable message. Errors without a recognized
code omit this field.
'
enum:
- no_payment_method
- compute_limit_exceeded
Pricing:
type: object
description: 'Pricing data grouped by category.
'
required:
- dedicated
- standard
properties:
dedicated:
$ref: '#/components/schemas/DedicatedPricing'
standard:
$ref: '#/components/schemas/StandardPricing'
DatabaseSize:
type: string
description: Compute size for dedicated databases. Each step up allocates proportionally more vCPU and RAM.
enum:
- 1x
- 2x
- 4x
- 8x
StoragePrice:
type: object
description: Storage pricing.
required:
- price_per_gib_hour
- price_per_gib_month
- included_gib_per_database
properties:
price_per_gib_hour:
type: number
format: double
description: Price per GiB per hour of provisioned storage above the included amount.
price_per_gib_month:
type: number
format: double
description: Price per GiB per month of provisioned storage above the included amount.
included_gib_per_database:
type: integer
description: 'GiB of storage included per database at no additional charge. Only
storage above this amount is billed at `price_per_gib_hour`.
'
ComputePrice:
type: object
description: Compute price for one size.
required:
- size
- milli_cpu
- memory_gib
- price_per_hour
- price_per_month
properties:
size:
$ref: '#/components/schemas/DatabaseSize'
milli_cpu:
type: integer
description: 'CPU allocation in millicores (1000 = 1 vCPU).
'
memory_gib:
type: integer
description: Memory allocation in GiB.
price_per_hour:
type: number
format: double
description: Price per hour while the database is running.
price_per_month:
type: number
format: double
description: Price per month while the database is running.
StandardPricing:
type: object
description: 'Pricing for standard (non-dedicated) databases, which share a
space-wide compute allowance.
'
required:
- compute
properties:
compute:
$ref: '#/components/schemas/StandardComputePrice'
DedicatedPricing:
type: object
description: Pricing for dedicated databases.
required:
- compute
- storage
properties:
compute:
type: array
description: Per-size compute pricing, ordered smallest to largest.
items:
$ref: '#/components/schemas/ComputePrice'
storage:
$ref: '#/components/schemas/StoragePrice'
StandardComputePrice:
type: object
description: 'Pricing for standard (shared) compute used beyond the free monthly
allowance.
'
required:
- price_per_hour
- included_compute_hours_per_month
properties:
price_per_hour:
type: number
format: double
description: 'Price per compute-hour used beyond the included monthly allowance,
metered in 15-minute increments.
'
included_compute_hours_per_month:
type: integer
description: 'Compute-hours included per month at no additional charge, shared
across all standard databases in the space. Only usage above this
amount is billed at `price_per_hour`.
'
Error:
type: object
description: Standard error response.
required:
- message
properties:
message:
type: string
description: Human-readable error message.
code:
$ref: '#/components/schemas/ErrorCode'
responses:
Error:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: 'User JWT or API key token (e.g. `gt_...`) sent as `Authorization: Bearer <token>`.'