{"openapi":"3.1.0","info":{"title":"VMCO Token Marketplace","description":"LLM token marketplace — contribute keys, earn credits, use any model","version":"0.3.0"},"paths":{"/v1/chat/completions":{"post":{"summary":"Chat Completions","operationId":"chat_completions_v1_chat_completions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/models":{"get":{"summary":"Get Models","description":"List all models available on the marketplace.\n\n- Default: OpenAI-compatible format (just model IDs)\n- ?detailed=true: extended info with pricing, provider count, availability","operationId":"get_models_v1_models_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"detailed","in":"query","required":false,"schema":{"type":"boolean","description":"Include pricing and provider count","default":false,"title":"Detailed"},"description":"Include pricing and provider count"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usage":{"get":{"summary":"Usage Summary","description":"Aggregated usage: balance, spending as consumer, earnings as provider.\n\nThree ways to get credits:\n1. Buy for USD: POST /v1/account/buy-credits\n2. Earn by sharing keys: others use your models → credits flow to you\n3. Direct deposit: POST /v1/account/deposit (admin)","operationId":"usage_summary_v1_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/transactions":{"get":{"summary":"Transactions","description":"Transaction history (credits ledger).","operationId":"transactions_v1_transactions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/account":{"get":{"tags":["account"],"summary":"Get Account","description":"Get current account info.","operationId":"get_account_v1_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/account/deposit":{"post":{"tags":["account"],"summary":"Deposit","description":"Direct credit deposit (admin/internal use).","operationId":"deposit_v1_account_deposit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepositCreditsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/account/keys":{"get":{"tags":["account"],"summary":"List Keys","description":"List your contributed provider keys with health and performance stats.","operationId":"list_keys_v1_account_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["account"],"summary":"Add Key","description":"Contribute a provider API key to the marketplace.","operationId":"add_key_v1_account_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/account/register":{"post":{"tags":["account"],"summary":"Register","description":"Create a new marketplace account. Returns API key.","operationId":"register_v1_account_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/account/buy-credits":{"post":{"tags":["payments"],"summary":"Buy Credits","description":"Initiate a credit purchase.\n\nReturns payment session with a redirect URL (Stripe, PayPal, crypto)\nor instructions (Payoneer invoice).","operationId":"buy_credits_v1_account_buy_credits_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BuyCreditsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/account/payment-methods":{"get":{"tags":["payments"],"summary":"List Payment Methods","description":"List enabled payment methods.","operationId":"list_payment_methods_v1_account_payment_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/account/payments":{"get":{"tags":["payments"],"summary":"Payment History","description":"Payment history for the authenticated account.","operationId":"payment_history_v1_account_payments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/stripe":{"post":{"tags":["payments"],"summary":"Stripe Webhook","description":"Stripe payment webhook.","operationId":"stripe_webhook_v1_webhooks_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/webhooks/paypal":{"post":{"tags":["payments"],"summary":"Paypal Webhook","description":"PayPal payment webhook.","operationId":"paypal_webhook_v1_webhooks_paypal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/webhooks/crypto":{"post":{"tags":["payments"],"summary":"Crypto Webhook","description":"Crypto (NOWPayments) IPN webhook.","operationId":"crypto_webhook_v1_webhooks_crypto_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/stats":{"get":{"tags":["admin"],"summary":"Platform Stats","description":"Platform-wide statistics.","operationId":"platform_stats_admin_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/accounts":{"get":{"tags":["admin"],"summary":"List Accounts","description":"List all accounts.","operationId":"list_accounts_admin_accounts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/accounts/{account_id}":{"put":{"tags":["admin"],"summary":"Admin Update Account","description":"Update account properties (role, tier, enabled, etc.).","operationId":"admin_update_account_admin_accounts__account_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/accounts/{account_id}/deposit":{"post":{"tags":["admin"],"summary":"Admin Deposit","description":"Manually deposit credits to an account.","operationId":"admin_deposit_admin_accounts__account_id__deposit_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","title":"Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDepositRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/payments":{"get":{"tags":["admin"],"summary":"Admin Payments","description":"List all payments across all accounts.","operationId":"admin_payments_admin_payments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/payment-config":{"get":{"tags":["admin"],"summary":"Admin Payment Config","description":"View enabled payment methods.","operationId":"admin_payment_config_admin_payment_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/payments/confirm":{"post":{"tags":["admin"],"summary":"Admin Confirm Payment","description":"Manually confirm a pending payment (for Payoneer/manual crypto).","operationId":"admin_confirm_payment_admin_payments_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmPaymentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/ai-marketplace.json":{"get":{"summary":"Ai Marketplace Discovery","description":"Machine-readable platform discovery for AI agents.","operationId":"ai_marketplace_discovery__well_known_ai_marketplace_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap Xml","operationId":"sitemap_xml_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"AddKeyRequest":{"properties":{"provider_type":{"type":"string","title":"Provider Type"},"api_key":{"type":"string","title":"Api Key"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models"},"owner_markup_percent":{"type":"number","title":"Owner Markup Percent","default":0.0}},"type":"object","required":["provider_type","api_key"],"title":"AddKeyRequest"},"AdminDepositRequest":{"properties":{"amount_credits":{"type":"number","title":"Amount Credits"},"description":{"type":"string","title":"Description","default":"Admin deposit"}},"type":"object","required":["amount_credits"],"title":"AdminDepositRequest"},"BuyCreditsRequest":{"properties":{"amount_usd":{"type":"number","maximum":10000.0,"exclusiveMinimum":0.0,"title":"Amount Usd"},"method":{"type":"string","maxLength":20,"minLength":1,"title":"Method"}},"type":"object","required":["amount_usd","method"],"title":"BuyCreditsRequest"},"ChatCompletionRequest":{"properties":{"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"},"messages":{"items":{"$ref":"#/components/schemas/ChatMessage"},"type":"array","maxItems":1000,"minItems":1,"title":"Messages"},"temperature":{"anyOf":[{"type":"number","maximum":2.0,"minimum":0.0},{"type":"null"}],"title":"Temperature"},"top_p":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Top P"},"max_tokens":{"anyOf":[{"type":"integer","maximum":1000000.0,"minimum":1.0},{"type":"null"}],"title":"Max Tokens"},"stream":{"type":"boolean","title":"Stream","default":false},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop"},"tools":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Tools"},"tool_choice":{"anyOf":[{},{"type":"null"}],"title":"Tool Choice"},"extra":{"additionalProperties":true,"type":"object","title":"Extra"}},"type":"object","required":["model","messages"],"title":"ChatCompletionRequest"},"ChatMessage":{"properties":{"role":{"type":"string","enum":["system","user","assistant","tool"],"title":"Role"},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"tool_calls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Tool Calls"},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id"}},"type":"object","required":["role"],"title":"ChatMessage"},"ConfirmPaymentRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"payment_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Reference"}},"type":"object","required":["session_id"],"title":"ConfirmPaymentRequest"},"DepositCreditsRequest":{"properties":{"amount_credits":{"type":"number","maximum":1000000.0,"exclusiveMinimum":0.0,"title":"Amount Credits"},"description":{"type":"string","title":"Description","default":"Direct credit deposit"}},"type":"object","required":["amount_credits"],"title":"DepositCreditsRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"RegisterRequest":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"email":{"anyOf":[{"type":"string","maxLength":320},{"type":"null"}],"title":"Email"}},"type":"object","required":["name"],"title":"RegisterRequest"},"UpdateAccountRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"max_requests_per_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Requests Per Min"},"enabled":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"UpdateAccountRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}