### GET /v1/spot/compute/offerings/{id} Source: https://api.forwardcompute.ai/v1/docs/openapi.json Get details for a specific compute offering. Returns full configuration details including GPU specs, memory, storage, and pricing information. ```markdown ### Parameters - **id** (string, path, required): Compute offering ID (example: "spot_coff_abc123def456") ### Responses #### 200 - Compute offering details - **data** (object) (required): GPU compute offering available for provisioning - **available** (boolean) (required): Whether this offering can currently be provisioned (example: true) - **boot_time** (object): Estimated instance boot time range - **max_seconds** (integer): Maximum boot time in seconds (example: 300) - **min_seconds** (integer): Minimum boot time in seconds (example: 60) - **configuration** (object): Hardware configuration details for the compute instance - **gpu_type** (string): GPU model (example: "A100") - **interconnect** (string): GPU interconnect type (e.g., NVLink) (example: "NVLink") - **memory_in_gb** (integer): System RAM in gigabytes (example: 256) - **num_gpus** (integer): Number of GPUs (example: 8) - **storage_in_gb** (integer): Storage in gigabytes (example: 1000) - **total_vram_in_gb** (integer): Total VRAM in gigabytes (example: 640) - **vcpus** (integer): Number of virtual CPUs (example: 48) - **vram_per_gpu_in_gb** (integer): VRAM per GPU in gigabytes (example: 80) - **deployment_type** (string (vm|container|baremetal)) (required): Deployment model for this offering (example: "vm") ("vm"|"container"|"baremetal") - **hourly_price** (string) (required): Hourly cost in USD for the entire instance (string for decimal precision) (example: "24.12") - **id** (string) (required): Unique compute offering ID (example: "spot_coff_abc123def456") - **instance_type** (string) (required): Instance type identifier (example: "A100x8") - **price_per_gpu_hour** (string) (required): Price per GPU per hour in USD (hourly_price / num_gpus) (example: "3.015") - **provider** (string) (required): Cloud provider (example: "shadeform") - **region** (string) (required): Geographic region code (example: "us-east-1") - **region_display_name** (string): Human-readable region name (example: "US East (Virginia)") - **object** (string (compute_offering)) (required) ("compute_offering") #### 404 - Not found - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/spot/compute/offerings/{id}" ``` ``` -------------------------------- ### GET /v1/spot/volumes/offerings/{id} Source: https://api.forwardcompute.ai/v1/docs/openapi.json Get details for a specific volume offering. ```markdown ### Parameters - **id** (string, path, required): Volume offering ID (example: "spot_voff_abc123def456") ### Responses #### 200 - Volume offering details - **data** (object) (required): Volume offering/type information - **fixed_size** (boolean): Whether volume size is fixed after creation - **id** (string) (required): Unique volume offering ID (example: "spot_voff_abc123def456") - **price_per_gb_per_hour** (string) (required): Hourly price per GB (as decimal string for precision) (example: "0.00008") - **provider** (string) (required): Cloud provider (example: "shadeform") - **region** (string) (required): Geographic region (example: "us-east-1") - **supports_multi_mount** (boolean): Whether volume can be attached to multiple instances - **object** (string (volume_offering)) (required) ("volume_offering") #### 404 - Not found - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/spot/volumes/offerings/{id}" ``` ``` -------------------------------- ### GET /v1/spot/compute/offerings Source: https://api.forwardcompute.ai/v1/docs/openapi.json Retrieve all available GPU compute offerings. Returns VM-based compute offerings from all providers with GPU configurations. The catalog is synchronized periodically from provider APIs via background tasks. Each offering includes: - Hardware specifications (GPU type, count, VRAM, CPU, memory, storage) - Pricing information (hourly rate in USD) - Availability status - Estimated boot time Use the offering `id` when creating instances via POST /v1/spot/instances. ```markdown ### Responses #### 200 - List of compute offerings - **data** (array (object)) (required) Array items: - **available** (boolean) (required): Whether this offering can currently be provisioned (example: true) - **boot_time** (object): Estimated instance boot time range - **max_seconds** (integer): Maximum boot time in seconds (example: 300) - **min_seconds** (integer): Minimum boot time in seconds (example: 60) - **configuration** (object): Hardware configuration details for the compute instance - **gpu_type** (string): GPU model (example: "A100") - **interconnect** (string): GPU interconnect type (e.g., NVLink) (example: "NVLink") - **memory_in_gb** (integer): System RAM in gigabytes (example: 256) - **num_gpus** (integer): Number of GPUs (example: 8) - **storage_in_gb** (integer): Storage in gigabytes (example: 1000) - **total_vram_in_gb** (integer): Total VRAM in gigabytes (example: 640) - **vcpus** (integer): Number of virtual CPUs (example: 48) - **vram_per_gpu_in_gb** (integer): VRAM per GPU in gigabytes (example: 80) - **deployment_type** (string (vm|container|baremetal)) (required): Deployment model for this offering (example: "vm") ("vm"|"container"|"baremetal") - **hourly_price** (string) (required): Hourly cost in USD for the entire instance (string for decimal precision) (example: "24.12") - **id** (string) (required): Unique compute offering ID (example: "spot_coff_abc123def456") - **instance_type** (string) (required): Instance type identifier (example: "A100x8") - **price_per_gpu_hour** (string) (required): Price per GPU per hour in USD (hourly_price / num_gpus) (example: "3.015") - **provider** (string) (required): Cloud provider (example: "shadeform") - **region** (string) (required): Geographic region code (example: "us-east-1") - **region_display_name** (string): Human-readable region name (example: "US East (Virginia)") - **object** (string (list)) (required) ("list") - **url** (string) (example: "/v1/spot/compute/offerings") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/spot/compute/offerings" ``` ``` -------------------------------- ### GET /v1/spot/instances/ Source: https://api.forwardcompute.ai/v1/docs/openapi.json List all compute instances owned by the authenticated user. Returns instances from all providers and regions. Instances are returned from cache; use GET /instances/{id}?refresh=true for fresh provider data. ```markdown ### Responses #### 200 - List of instances - **data** (array (object)) (required) Array items: - **created** (string (date-time)): Creation timestamp (ISO 8601) - **envs** (array (object)): Environment variables set on instance Array items: - **name** (string) (required): Environment variable name (example: "MY_API_KEY") - **value** (string) (required): Environment variable value (example: "secret123") - **id** (string) (required): Unique instance ID (example: "spot_inst_abc123def456") - **ip** (string (ipv4)): Public IP address (available when active) (example: "203.0.113.42") - **modified** (string (date-time)): Last modification timestamp (ISO 8601) - **name** (string) (required): Instance name (example: "my-training-instance") - **object** (string (spot.instance)) (required) ("spot.instance") - **owner** (string) (required): Membership ID of the instance owner (example: "mem_abc123def456") - **provider** (string) (required): Cloud provider hosting the instance (example: "shadeform") - **region** (string) (required): Geographic region of the instance (example: "us-east-1") - **ssh_key_id** (string): SSH key ID used for access (example: "spot_sshk_abc123def456") - **ssh_port** (integer) (required): SSH port for connecting (example: 22) - **ssh_user** (string): SSH username for connecting (example: "ubuntu") - **status** (string (creating|restarting|active|error|deleting|deleted)) (required): Current instance status ("creating"|"restarting"|"active"|"error"|"deleting"|"deleted") - **volume_ids** (array (string)): Attached volume IDs - **object** (string (list)) (required) ("list") - **url** (string) (example: "/v1/spot/instances") #### 401 - Unauthorized - authentication required - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/spot/instances/" ``` ``` -------------------------------- ### GET /v1/spot/volumes/{id} Source: https://api.forwardcompute.ai/v1/docs/openapi.json Get details for a specific volume. Use `?refresh=true` to fetch fresh data from the cloud provider. ```markdown ### Parameters - **id** (string, path, required): Volume ID (example: "spot_vol_abc123def456") - **refresh** (boolean, query, optional): Fetch fresh data from provider instead of cache (default: false) ### Responses #### 200 - Volume details - **cloud_assigned_id** (string): Provider-assigned volume identifier - **cost_estimate** (number): Estimated hourly cost - **created** (string (date-time)): Creation timestamp (ISO 8601) - **fixed_size** (boolean): Whether volume size is fixed - **id** (string) (required): Unique volume ID (example: "spot_vol_abc123def456") - **modified** (string (date-time)): Last modification timestamp (ISO 8601) - **mounted_by** (string): Instance ID currently mounting this volume - **name** (string) (required): Volume name (example: "my-data-volume") - **object** (string (spot.volume)) (required) ("spot.volume") - **owner** (string) (required): Membership ID of the volume owner (example: "mem_abc123def456") - **provider** (string) (required): Cloud provider (example: "shadeform") - **region** (string) (required): Geographic region (example: "us-east-1") - **size_gb** (integer) (required): Volume size in gigabytes (example: 100) - **supports_multi_mount** (boolean): Whether volume can be mounted to multiple instances #### 401 - Unauthorized - authentication required - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 403 - Forbidden - insufficient permissions - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 404 - Not found - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/spot/volumes/{id}?refresh=false" ``` ``` -------------------------------- ### GET /v1/spot/volumes/ Source: https://api.forwardcompute.ai/v1/docs/openapi.json List all volumes owned by the authenticated user. Returns volumes from all providers and regions. ```markdown ### Responses #### 200 - List of volumes - **data** (array (object)) (required) Array items: - **cloud_assigned_id** (string): Provider-assigned volume identifier - **cost_estimate** (number): Estimated hourly cost - **created** (string (date-time)): Creation timestamp (ISO 8601) - **fixed_size** (boolean): Whether volume size is fixed - **id** (string) (required): Unique volume ID (example: "spot_vol_abc123def456") - **modified** (string (date-time)): Last modification timestamp (ISO 8601) - **mounted_by** (string): Instance ID currently mounting this volume - **name** (string) (required): Volume name (example: "my-data-volume") - **object** (string (spot.volume)) (required) ("spot.volume") - **owner** (string) (required): Membership ID of the volume owner (example: "mem_abc123def456") - **provider** (string) (required): Cloud provider (example: "shadeform") - **region** (string) (required): Geographic region (example: "us-east-1") - **size_gb** (integer) (required): Volume size in gigabytes (example: 100) - **supports_multi_mount** (boolean): Whether volume can be mounted to multiple instances - **object** (string (list)) (required) ("list") - **url** (string) (example: "/v1/spot/volumes") #### 401 - Unauthorized - authentication required - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/spot/volumes/" ``` ``` -------------------------------- ### GET /v1/spot/instances/{id} Source: https://api.forwardcompute.ai/v1/docs/openapi.json Get details for a specific compute instance. By default, returns cached instance data. Use `?refresh=true` query parameter to fetch fresh status from the cloud provider. ```markdown ### Parameters - **id** (string, path, required): Instance ID (example: "spot_inst_abc123def456") - **refresh** (boolean, query, optional): Fetch fresh data from provider instead of cache (default: false) ### Responses #### 200 - Instance details - **created** (string (date-time)): Creation timestamp (ISO 8601) - **envs** (array (object)): Environment variables set on instance Array items: - **name** (string) (required): Environment variable name (example: "MY_API_KEY") - **value** (string) (required): Environment variable value (example: "secret123") - **id** (string) (required): Unique instance ID (example: "spot_inst_abc123def456") - **ip** (string (ipv4)): Public IP address (available when active) (example: "203.0.113.42") - **modified** (string (date-time)): Last modification timestamp (ISO 8601) - **name** (string) (required): Instance name (example: "my-training-instance") - **object** (string (spot.instance)) (required) ("spot.instance") - **owner** (string) (required): Membership ID of the instance owner (example: "mem_abc123def456") - **provider** (string) (required): Cloud provider hosting the instance (example: "shadeform") - **region** (string) (required): Geographic region of the instance (example: "us-east-1") - **ssh_key_id** (string): SSH key ID used for access (example: "spot_sshk_abc123def456") - **ssh_port** (integer) (required): SSH port for connecting (example: 22) - **ssh_user** (string): SSH username for connecting (example: "ubuntu") - **status** (string (creating|restarting|active|error|deleting|deleted)) (required): Current instance status ("creating"|"restarting"|"active"|"error"|"deleting"|"deleted") - **volume_ids** (array (string)): Attached volume IDs #### 401 - Unauthorized - authentication required - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 403 - Forbidden - insufficient permissions - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 404 - Not found - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/spot/instances/{id}?refresh=false" ``` ``` -------------------------------- ### GET /v1/models/ Source: https://api.forwardcompute.ai/v1/docs/openapi.json Lists the currently available models, and provides basic information about each one such as the owner and availability. ```markdown ### Responses #### 200 - List of available models - **data** (array (object)) (required): Array of model objects Array items: - **context_length** (integer): Maximum context length in tokens - **created** (integer): The Unix timestamp (in seconds) when the model was created (example: 1686935002) - **description** (string): Model description - **display_name** (string) (required): Human-readable display name - **id** (string) (required): The model identifier, which can be referenced in the API endpoints (example: "meta-llama/llama-3.3-70b-instruct-turbo") - **license** (string): Model license - **link** (string): Link to model page - **model_type** (string (chat|embedding|image|audio|video|transcribe)) (required): Type of model ("chat"|"embedding"|"image"|"audio"|"video"|"transcribe") - **object** (string (model)) (required): The object type, which is always 'model' ("model") - **owned_by** (string): The organization that owns the model (example: "meta") - **pricing** (object) (required): Pricing for chat models (per 1M tokens) - **input** (number) (required): Price per 1M input tokens - **output** (number) (required): Price per 1M output tokens - **unit** (string): Pricing unit (example: "1M tokens") - **provider** (string) (required): Inference provider - **object** (string (list)) (required): The object type, which is always 'list' ("list") #### 400 - Validation error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 401 - Unauthorized - authentication required - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/models/" ``` ``` -------------------------------- ### GET /v1/spot/volumes/offerings Source: https://api.forwardcompute.ai/v1/docs/openapi.json List all available volume offerings from all providers. Volume offerings represent the types of storage available for provisioning. Data is synced periodically from providers via background task. ```markdown ### Responses #### 200 - List of volume offerings - **data** (array (object)) (required) Array items: - **fixed_size** (boolean): Whether volume size is fixed after creation - **id** (string) (required): Unique volume offering ID (example: "spot_voff_abc123def456") - **price_per_gb_per_hour** (string) (required): Hourly price per GB (as decimal string for precision) (example: "0.00008") - **provider** (string) (required): Cloud provider (example: "shadeform") - **region** (string) (required): Geographic region (example: "us-east-1") - **supports_multi_mount** (boolean): Whether volume can be attached to multiple instances - **object** (string (list)) (required) ("list") - **url** (string) (example: "/v1/spot/volumes/offerings") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/spot/volumes/offerings" ``` ``` -------------------------------- ### GET /v1/models/{model} Source: https://api.forwardcompute.ai/v1/docs/openapi.json Retrieves a model instance, providing basic information about the model such as the owner and permissioning. ```markdown ### Parameters - **model** (string, path, required): The ID of the model to use for this request ### Responses #### 200 - The model object matching the specified ID - **context_length** (integer): Maximum context length in tokens - **created** (integer): The Unix timestamp (in seconds) when the model was created (example: 1686935002) - **description** (string): Model description - **display_name** (string) (required): Human-readable display name - **id** (string) (required): The model identifier, which can be referenced in the API endpoints (example: "meta-llama/llama-3.3-70b-instruct-turbo") - **license** (string): Model license - **link** (string): Link to model page - **model_type** (string (chat|embedding|image|audio|video|transcribe)) (required): Type of model ("chat"|"embedding"|"image"|"audio"|"video"|"transcribe") - **object** (string (model)) (required): The object type, which is always 'model' ("model") - **owned_by** (string): The organization that owns the model (example: "meta") - **pricing** (object) (required): Pricing for chat models (per 1M tokens) - **input** (number) (required): Price per 1M input tokens - **output** (number) (required): Price per 1M output tokens - **unit** (string): Pricing unit (example: "1M tokens") - **provider** (string) (required): Inference provider #### 400 - Validation error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 401 - Unauthorized - authentication required - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 404 - Model not found - **error** (object) - **message** (string) (example: "Model not found") - **type** (string) (example: "not_found") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/models/{model}" ``` ``` -------------------------------- ### GET /v1/spot/ssh-keys/ Source: https://api.forwardcompute.ai/v1/docs/openapi.json List all SSH keys owned by the authenticated user. Returns keys registered across all providers. ```markdown ### Responses #### 200 - List of SSH keys - **data** (array (object)) (required) Array items: - **created** (string (date-time)): Creation timestamp (ISO 8601) - **id** (string) (required): Unique SSH key ID (example: "spot_sshk_abc123def456") - **modified** (string (date-time)): Last modification timestamp (ISO 8601) - **name** (string) (required): Key name (example: "my-laptop-key") - **object** (string (spot.ssh_key)) (required) ("spot.ssh_key") - **owner** (string) (required): Membership ID of the key owner (example: "mem_abc123def456") - **provider** (string) (required): Cloud provider the key is registered with (example: "shadeform") - **provider_data** (object): Additional provider-specific metadata - **provider_key_id** (string) (required): Provider's identifier for this key - **public_key** (string) (required): SSH public key content - **object** (string (list)) (required) ("list") - **url** (string) (example: "/v1/spot/ssh-keys") #### 401 - Unauthorized - authentication required - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X GET "https://app.forwardcompute.ai/v1/spot/ssh-keys/" ``` ``` -------------------------------- ### POST /v1/spot/instances/ Source: https://api.forwardcompute.ai/v1/docs/openapi.json Create a new GPU compute instance. The instance will be provisioned using the specified compute offering and configuration. Once created, the instance status will be 'creating' until it becomes 'active'. Use the `ssh_key_id` parameter to specify which SSH key to use for access. Volumes can be attached via `volume_ids` and environment variables via `envs`. ```markdown ### Request Body **Content-Type:** application/json - **envs** (array (object)): Environment variables to set on instance Array items: - **name** (string) (required): Environment variable name (example: "MY_API_KEY") - **value** (string) (required): Environment variable value (example: "secret123") - **name** (string) (required): Human-readable instance name (example: "my-training-instance") - **offering_id** (string) (required): Compute offering ID from /v1/spot/compute/offerings (example: "spot_coff_abc123def456") - **ssh_key_id** (string): SSH key ID for instance access (from /v1/spot/ssh-keys) (example: "spot_sshk_abc123def456") - **volume_ids** (array (string)): Volume IDs to attach to instance (example: ["spot_vol_abc123def456"]) ### Responses #### 200 - Successful response - **id** (string) - **object** (string) #### 201 - Instance created successfully - **created** (string (date-time)): Creation timestamp (ISO 8601) - **envs** (array (object)): Environment variables set on instance Array items: - **name** (string) (required): Environment variable name (example: "MY_API_KEY") - **value** (string) (required): Environment variable value (example: "secret123") - **id** (string) (required): Unique instance ID (example: "spot_inst_abc123def456") - **ip** (string (ipv4)): Public IP address (available when active) (example: "203.0.113.42") - **modified** (string (date-time)): Last modification timestamp (ISO 8601) - **name** (string) (required): Instance name (example: "my-training-instance") - **object** (string (spot.instance)) (required) ("spot.instance") - **owner** (string) (required): Membership ID of the instance owner (example: "mem_abc123def456") - **provider** (string) (required): Cloud provider hosting the instance (example: "shadeform") - **region** (string) (required): Geographic region of the instance (example: "us-east-1") - **ssh_key_id** (string): SSH key ID used for access (example: "spot_sshk_abc123def456") - **ssh_port** (integer) (required): SSH port for connecting (example: 22) - **ssh_user** (string): SSH username for connecting (example: "ubuntu") - **status** (string (creating|restarting|active|error|deleting|deleted)) (required): Current instance status ("creating"|"restarting"|"active"|"error"|"deleting"|"deleted") - **volume_ids** (array (string)): Attached volume IDs #### 400 - Validation error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 401 - Unauthorized - authentication required - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") #### 500 - Internal server error - **error** (object) (required) - **field** (string): Field name for validation errors - **message** (string) (required): Human-readable error message - **type** (string (validation_error|authentication_error|unauthorized|not_found|forbidden|provider_error|server_error|insufficient_balance|streaming_error)) (required): Error type identifier ("validation_error"|"authentication_error"|"unauthorized"|"not_found"|"forbidden"|"provider_error"|"server_error"|"insufficient_balance"|"streaming_error") ### Example Usage ```bash curl -X POST "https://app.forwardcompute.ai/v1/spot/instances/" \ -H "Content-Type: application/json" \ -d '{ "envs": [ { "name": "MY_API_KEY", "value": "secret123" } ], "name": "my-training-instance", "offering_id": "spot_coff_abc123def456", "ssh_key_id": "spot_sshk_abc123def456", "volume_ids": [ "spot_vol_abc123def456" ] }' ``` ```