{"openapi": "3.1.1", "info": {"title": "Noach Ark workload rental finder", "version": "1.0.0", "description": "Find observed GPU rentals for a model and parallel active requests. Memory fit is an estimate for BF16 weights and BF16 KV cache, not a throughput or latency guarantee. One parallel active user means one concurrent active request; inactive users do not consume a request slot. V1 sizes the entire model and cache on one GPU. Distributed model sizing is not evaluated; multi-GPU rentals are charged in full. Rank and budget use estimated whole-instance compute cost in one currency; no currency conversion is applied. Partial subtotals are not complete billing quotes. Read unknown costs and assumptions before recommending. Prices are observations checked within 72 hours, not live inventory. Verify availability and terms with the provider."}, "servers": [{"url": "https://noachark.com"}], "externalDocs": {"url": "https://noachark.com/for-agents/", "description": "Agent workflow"}, "paths": {"/api/v1/models/": {"get": {"operationId": "listModels", "summary": "Discover supported model slugs and pinned sizing evidence", "description": "Read-only. Unknown, duplicate, empty or conflicting parameters return 400. Exact decimal amounts are JSON strings. No authentication required.", "parameters": [{"name": "q", "in": "query", "description": "Case-insensitive model or GPU name/slug search.", "schema": {"type": "string", "minLength": 1, "maxLength": 120}}, {"name": "page", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 1000000, "default": 1}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 50, "default": 12}}], "responses": {"200": {"description": "Successful result", "content": {"application/json": {"schema": {"type": "object", "required": ["api_version", "pagination", "results"], "properties": {"api_version": {"type": "string", "const": "1"}, "pagination": {"type": "object", "required": ["count", "page", "limit", "next", "previous"], "properties": {"count": {"type": "integer"}, "page": {"type": "integer"}, "limit": {"type": "integer"}, "next": {"type": ["string", "null"]}, "previous": {"type": ["string", "null"]}}}, "results": {"type": "array", "items": {"type": "object", "properties": {"slug": {"type": "string"}, "name": {"type": "string"}, "family": {"type": "string"}, "parameter_count_b": {"type": ["string", "null"], "description": "Exact decimal value; parse with decimal arithmetic, not binary floating point."}, "context_window": {"type": ["integer", "null"]}, "model_search_supported": {"type": "boolean"}, "unsupported_reason": {"type": ["string", "null"]}, "memory_profile": {"type": "object"}, "source_url": {"type": "string"}, "source_checked_at": {"type": ["string", "null"]}, "url": {"type": "string", "format": "uri"}}}}}}}}}, "400": {"description": "Invalid request; no requirements were broadened", "content": {"application/json": {"schema": {"type": "object", "required": ["errors"], "properties": {"errors": {"type": "object", "additionalProperties": {"type": "array", "items": {"type": "string"}}}}}}}}, "405": {"description": "Only GET and HEAD are supported"}}}}, "/api/v1/gpus/": {"get": {"operationId": "listGpus", "summary": "Discover GPU slugs for optional technical requirements", "description": "Read-only. Unknown, duplicate, empty or conflicting parameters return 400. Exact decimal amounts are JSON strings. No authentication required.", "parameters": [{"name": "q", "in": "query", "description": "Case-insensitive model or GPU name/slug search.", "schema": {"type": "string", "minLength": 1, "maxLength": 120}}, {"name": "page", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 1000000, "default": 1}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 50, "default": 12}}], "responses": {"200": {"description": "Successful result", "content": {"application/json": {"schema": {"type": "object", "required": ["api_version", "pagination", "results"], "properties": {"api_version": {"type": "string", "const": "1"}, "pagination": {"type": "object", "required": ["count", "page", "limit", "next", "previous"], "properties": {"count": {"type": "integer"}, "page": {"type": "integer"}, "limit": {"type": "integer"}, "next": {"type": ["string", "null"]}, "previous": {"type": ["string", "null"]}}}, "results": {"type": "array", "items": {"type": "object", "properties": {"slug": {"type": "string"}, "name": {"type": "string"}, "vram_gb_per_gpu": {"type": "string", "description": "Exact decimal value; parse with decimal arithmetic, not binary floating point."}, "source_url": {"type": "string"}, "source_checked_at": {"type": ["string", "null"]}, "url": {"type": "string", "format": "uri"}}}}}}}}}, "400": {"description": "Invalid request; no requirements were broadened", "content": {"application/json": {"schema": {"type": "object", "required": ["errors"], "properties": {"errors": {"type": "object", "additionalProperties": {"type": "array", "items": {"type": "string"}}}}}}}}, "405": {"description": "Only GET and HEAD are supported"}}}}, "/api/v1/rentals/search/": {"get": {"operationId": "findRentals", "summary": "Find eligible rentals ranked by whole-instance compute estimate", "description": "Read-only. Unknown, duplicate, empty or conflicting parameters return 400. Exact decimal amounts are JSON strings. No authentication required.", "parameters": [{"name": "memory_mode", "in": "query", "description": "Default model mode requires model. vram mode requires min_vram_gb. Do not mix mode-specific inputs.", "schema": {"type": "string", "enum": ["model", "vram"], "default": "model"}}, {"name": "model", "in": "query", "description": "Required in model mode. Discover exact slugs and model_search_supported using /api/v1/models/.", "schema": {"type": "string", "description": "Exact active catalog slug; discover it using the catalog endpoint."}}, {"name": "parallel_users", "in": "query", "description": "Concurrent active requests, not the total number of registered users. Model mode only.", "schema": {"type": "integer", "minimum": 1, "maximum": 1024, "default": 1}}, {"name": "tokens_per_user", "in": "query", "description": "Total cached input + output tokens per active request, limited to the model's recorded context window. Model mode only.", "schema": {"type": "integer", "minimum": 1, "maximum": 1000000, "default": 8192}}, {"name": "runtime_reserve_gib", "in": "query", "description": "Additional runtime memory per GPU; GiB. Model mode only.", "schema": {"type": "string", "description": "Decimal value, 0 to 1000000; at most 2 decimal places.", "default": "4"}}, {"name": "min_vram_gb", "in": "query", "description": "Required in vram mode. Memory per GPU including runtime overhead; decimal GB. No pooling.", "schema": {"type": "string", "description": "Decimal value, 0.01 to 1000000; at most 2 decimal places."}}, {"name": "gpu", "in": "query", "description": "Optional exact GPU slug. vram mode only.", "schema": {"type": "string", "description": "Exact active catalog slug; discover it using the catalog endpoint."}}, {"name": "gpu_count", "in": "query", "description": "Optional exact GPU count per instance. vram mode only.", "schema": {"type": "integer", "minimum": 1, "maximum": 1024}}, {"name": "country", "in": "query", "description": "Country preference", "schema": {"type": "string", "enum": ["AR", "AU", "BE", "BR", "BG", "CA", "CN", "CZ", "DK", "EE", "FI", "FR", "DE", "HK", "IS", "IN", "IE", "IL", "IT", "JP", "LV", "LT", "MX", "NL", "NZ", "NO", "PL", "PT", "PR", "RO", "RS", "SG", "SK", "ZA", "KR", "ES", "SE", "CH", "TW", "TH", "TR", "UA", "GB", "US", "VN"]}}, {"name": "region", "in": "query", "description": "Region or provider zone (optional)", "schema": {"type": "string", "maxLength": 120}}, {"name": "billing", "in": "query", "description": "Rental plan", "schema": {"type": "string", "enum": ["hourly", "monthly"], "default": "hourly"}}, {"name": "hours", "in": "query", "description": "Hourly rental duration only. Do not send for monthly billing.", "schema": {"type": "string", "description": "Decimal value, 0.000001 to 1000000; at most 6 decimal places.", "default": "24"}}, {"name": "months", "in": "query", "description": "Full monthly billing periods only. Do not send for hourly billing.", "schema": {"type": "integer", "minimum": 1, "maximum": 1200, "default": 1}}, {"name": "interruptions", "in": "query", "description": "no excludes spot rentals. yes includes them; does not promise availability.", "schema": {"type": "string", "enum": ["no", "yes"], "default": "no"}}, {"name": "currency", "in": "query", "description": "Currency", "schema": {"type": "string", "enum": ["USD", "EUR", "GBP", "CAD", "AUD", "JPY"], "default": "USD"}}, {"name": "budget", "in": "query", "description": "Maximum whole-instance compute estimate in the selected currency, for the entire requested duration. Excludes extras.", "schema": {"type": "string", "description": "Decimal value, 0 to 1000000000000; at most 6 decimal places."}}, {"name": "storage_gib", "in": "query", "description": "Additional persistent storage (GiB)", "schema": {"type": "string", "description": "Decimal value, 0 to 1000000000; at most 6 decimal places.", "default": "0"}}, {"name": "storage_hours", "in": "query", "description": "Storage retention in hours. Required for monthly rentals with nonzero storage; months are not converted to hours.", "schema": {"type": "string", "description": "Decimal value, 0.000001 to 1000000; at most 6 decimal places."}}, {"name": "storage_months", "in": "query", "description": "Full storage billing months. Defaults to requested rental months (or one for hourly rentals).", "schema": {"type": "integer", "minimum": 1, "maximum": 1200}}, {"name": "egress_gib", "in": "query", "description": "Outbound transfer (GiB)", "schema": {"type": "string", "description": "Decimal value, 0 to 1000000000; at most 6 decimal places.", "default": "0"}}, {"name": "page", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 1000000, "default": 1}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 50, "default": 12}}], "responses": {"200": {"description": "Successful result", "content": {"application/json": {"schema": {"type": "object", "required": ["api_version", "pagination", "results"], "properties": {"api_version": {"type": "string", "const": "1"}, "pagination": {"type": "object", "required": ["count", "page", "limit", "next", "previous"], "properties": {"count": {"type": "integer"}, "page": {"type": "integer"}, "limit": {"type": "integer"}, "next": {"type": ["string", "null"]}, "previous": {"type": ["string", "null"]}}}, "results": {"type": "array", "items": {"type": "object", "properties": {"offer_id": {"type": "integer"}, "provider": {"type": "object"}, "gpu": {"type": "object"}, "instance_name": {"type": "string"}, "rental_type": {"type": "string"}, "billing": {"type": "string"}, "minimum_months": {"type": "integer"}, "stock_status": {"type": "string"}, "location": {"type": "object"}, "memory_fit": {"type": "string", "enum": ["estimated", "meets_requested_capacity"]}, "cost": {"type": "object", "properties": {"currency": {"type": "string"}, "whole_instance_rate": {"type": "string", "description": "Exact decimal value; parse with decimal arithmetic, not binary floating point."}, "rate_unit": {"type": "string"}, "compute_estimate": {"type": "string", "description": "Exact decimal value; parse with decimal arithmetic, not binary floating point."}, "partial_subtotal": {"type": "string", "description": "Exact decimal value; parse with decimal arithmetic, not binary floating point."}, "is_complete_quote": {"type": "boolean", "const": false}, "lines": {"type": "array", "items": {"type": "object", "properties": {"label": {"type": "string"}, "amount": {"type": ["string", "null"], "description": "Exact decimal value; parse with decimal arithmetic, not binary floating point."}}}}, "unknown": {"type": "array", "items": {"type": "string"}}, "assumptions": {"type": "array", "items": {"type": "string"}}}}, "evidence": {"type": "object", "description": "Separate price and instance-detail timestamps and their source URLs."}, "instance_facts": {"type": "object", "description": "Sourced instance configuration and billing terms; missing keys mean unknown."}, "url": {"type": "string", "format": "uri"}, "comparison_url": {"type": "string", "format": "uri"}, "provider_url": {"type": "string", "format": "uri"}}}}, "generated_at": {"type": "string", "format": "date-time"}, "criteria": {"type": "object"}, "sizing_scope": {"type": "string", "const": "single_gpu_model_and_cache"}, "coverage": {"type": "object"}, "defaults_applied": {"type": "object"}, "effective_workload": {"type": "object"}, "required_vram_gb_per_gpu": {"type": "string", "description": "Exact decimal value; parse with decimal arithmetic, not binary floating point."}, "memory_estimate": {"type": ["object", "null"]}, "ranking": {"type": "string", "const": "whole_instance_compute_estimate_ascending"}, "price_max_age_hours": {"type": "integer", "const": 72}, "limitations": {"type": "array", "items": {"type": "string"}}, "finder_url": {"type": "string", "format": "uri"}}}}}}, "400": {"description": "Invalid request; no requirements were broadened", "content": {"application/json": {"schema": {"type": "object", "required": ["errors"], "properties": {"errors": {"type": "object", "additionalProperties": {"type": "array", "items": {"type": "string"}}}}}}}}, "405": {"description": "Only GET and HEAD are supported"}}}}}}