{"openapi":"3.1.0","info":{"title":"Venice (BYOK) API","version":"0.1.0","description":"Venice (BYOK) lets an AI assistant read your own Venice data through the Venice API with a key you supply (Venice API key). Read-only: 10 tools (list_models, list_model_traits, list_image_styles, get_balance, get_rate_limits, list_rate_limit_violations, get_usage_analytics, get_usage_history, list_api_keys, list_characters). The BYOK key travels with each request, is used for that one call only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-venice.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-venice/docs"},"termsOfService":"https://connectorbay.com/byok-venice/terms"},"servers":[{"url":"https://byok-venice.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-venice/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_models":{"post":{"operationId":"list_models","summary":"List Venice models of one type (text, image, tts, asr, embedding, video, music and more) with context length, privacy mo","description":"List Venice models of one type (text, image, tts, asr, embedding, video, music and more) with context length, privacy mode and capability flags. Use for \"Which Venice text models support reasoning and web search\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"enum":["asr","decision","embedding","image","music","text","tts","upscale","inpaint","video"],"type":"string"},{"type":"null"}],"default":null,"description":"Model type to list: asr, decision, embedding, image, music, text, tts, upscale, inpaint or video; the API default is text.","title":"Type"}},"title":"list_modelsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_model_traits":{"post":{"operationId":"list_model_traits","summary":"List model trait categories (for example text:uncensored or image:fast) with the model each points to. Use for \"What are","description":"List model trait categories (for example text:uncensored or image:fast) with the model each points to. Use for \"What are the default Venice text model traits\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"enum":["asr","decision","embedding","image","music","text","tts","upscale","inpaint","video"],"type":"string"},{"type":"null"}],"default":"text","description":"Model type: asr, decision, embedding, image, music, text, tts, upscale, inpaint or video.","title":"Type"}},"title":"list_model_traitsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_image_styles":{"post":{"operationId":"list_image_styles","summary":"List the image style presets that can be used when generating images. Use for \"Which image styles does Venice offer\".","description":"List the image style presets that can be used when generating images. Use for \"Which image styles does Venice offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_image_stylesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_balance":{"post":{"operationId":"get_balance","summary":"Show remaining DIEM, USD, bundled and earned credit balances, the consumption currency and the DIEM epoch allocation. Us","description":"Show remaining DIEM, USD, bundled and earned credit balances, the consumption currency and the DIEM epoch allocation. Use for \"How much Venice balance do I have left\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_balanceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_rate_limits":{"post":{"operationId":"get_rate_limits","summary":"Show the key's API tier, balances, key expiration, next rate-limit epoch and per-model rate limits. Use for \"What are my","description":"Show the key's API tier, balances, key expiration, next rate-limit epoch and per-model rate limits. Use for \"What are my Venice API rate limits per model\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_rate_limitsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_rate_limit_violations":{"post":{"operationId":"list_rate_limit_violations","summary":"List the last 50 rate limits the account exceeded, with model, limit type and time. Use for \"Which Venice rate limits di","description":"List the last 50 rate limits the account exceeded, with model, limit type and time. Use for \"Which Venice rate limits did I hit recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_rate_limit_violationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_usage_analytics":{"post":{"operationId":"get_usage_analytics","summary":"Get aggregated usage with breakdowns by date, model and API key over a lookback period or a date range (beta endpoint). ","description":"Get aggregated usage with breakdowns by date, model and API key over a lookback period or a date range (beta endpoint). Use for \"How much did I spend on Venice per model in the last 7 days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"lookback":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":"7d","description":"Lookback period such as 7d (the API default is 7d); ignored when startDate and endDate are given.","title":"Lookback"},"start_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Range start date.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Range end date.","title":"End Date"}},"title":"get_usage_analyticsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_usage_history":{"post":{"operationId":"get_usage_history","summary":"Walk billing usage entries in ascending time order with amount, currency, SKU and token counts; follow nextCursor for mo","description":"Walk billing usage entries in ascending time order with amount, currency, SKU and token counts; follow nextCursor for more. Use for \"Show my latest Venice billing usage entries in USD\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"currency":{"anyOf":[{"enum":["USD","DIEM","BUNDLED_CREDITS","EARNED_CREDITS"],"type":"string"},{"type":"null"}],"default":null,"description":"Only entries in this currency.","title":"Currency"},"start_timestamp":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries from this timestamp on (first request only).","title":"Start Timestamp"},"end_timestamp":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries up to this timestamp (first request only).","title":"End Timestamp"},"page_size":{"anyOf":[{"maximum":1000,"minimum":10,"type":"integer"},{"type":"null"}],"default":100,"description":"How many entries to return (10 to 1000).","title":"Page Size"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"The nextCursor from the previous answer, to continue the walk.","title":"Cursor"}},"title":"get_usage_historyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_api_keys":{"post":{"operationId":"list_api_keys","summary":"List the account's API keys with type, description, creation, expiry, last use and recent spend (key secrets are never r","description":"List the account's API keys with type, description, creation, expiry, last use and recent spend (key secrets are never returned). Use for \"Which Venice API keys do I have and when were they last used\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_api_keysArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_characters":{"post":{"operationId":"list_characters","summary":"Browse the preview character catalog with filters for search text, sort order and flags; page with limit and offset. Use","description":"Browse the preview character catalog with filters for search text, sort order and flags; page with limit and offset. Use for \"Find popular Venice characters about history\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text.","title":"Search"},"sort_by":{"anyOf":[{"enum":["featured","highestRating","highlyRated","highlyRatedAndRecent","imports","mostRecent","ratingCount"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by featured, highestRating, highlyRated, highlyRatedAndRecent, imports, mostRecent or ratingCount.","title":"Sort By"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc.","title":"Sort Order"},"is_adult":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":"false","description":"Whether to return adult characters: 'true' or 'false' (this connector asks for 'false' by default).","title":"Is Adult"},"limit":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}],"default":50,"description":"How many characters to return (0 to 100).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many characters to skip.","title":"Offset"}},"title":"list_charactersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}