{"openapi":"3.0.0","info":{"title":"Veda Console API","version":"1.0.0","description":"The Veda Console API is the programmatic surface for interacting with\nVeda vaults outside of the [Veda Console](https://console.veda.tech).\nIt exposes the endpoints that power Veda's first-party products —\nposition data, transaction builder / rebalancing, permissions updates,\nand more — to partners building custom strategist tooling, automation,\nand dashboards.\n\nUse the [Veda Console](https://console.veda.tech) to generate an API key.\n\n## Authentication\n\nAll endpoints require an API key passed as a Bearer token:\n\n    Authorization: Bearer veda_user_live_...\n\nYour key is scoped to a single user — calls outside that user's\npermissions return 403.\n\n## Errors\n\nEvery error response is JSON of the form:\n\n    {\"error\": \"<human-readable message>\"}\n\nCommon statuses:\n  * `401` — missing or malformed Authorization header\n  * `403` — key revoked/expired, or insufficient permission for this\n    action/resource\n  * `404` — resource not found\n  * `429` — rate limit exceeded\n  * `5xx` — transient Veda-side error; safe to retry\n\n## Versioning\n\nThe current API is `v1`. Breaking changes ship under a new prefix\n(`v2`, etc.) with a deprecation window for `v1`. Additive changes\n(new endpoints, new optional fields) ship in place.\n"},"servers":[{"url":"https://api.veda.tech/v1"}],"paths":{"/tx-builder/health":{"get":{"tags":["Health"],"summary":"Health Check","operationId":"health_check_tx_builder_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"401":{"description":"Unauthorized — missing or malformed Authorization header.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Unauthorized"}}}}}},"403":{"description":"Forbidden — API key invalid, revoked, expired, or insufficient permissions for this action or resource.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Forbidden"}}}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Too Many Requests"},"retry_after":{"type":"integer","example":60}}}}}}}}},"/tx-builder/api/actions/{chain}/{vault_address}/{strategist_address}":{"get":{"tags":["Transaction Builder"],"summary":"Get Available Actions","operationId":"get_available_actions_tx_builder_api_actions__chain___vault_address___strategist_address__get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"vault_address","in":"path","required":true,"schema":{"type":"string","title":"Vault Address"}},{"name":"strategist_address","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Strategist Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Unauthorized — missing or malformed Authorization header.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Unauthorized"}}}}}},"403":{"description":"Forbidden — API key invalid, revoked, expired, or insufficient permissions for this action or resource.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Forbidden"}}}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Too Many Requests"},"retry_after":{"type":"integer","example":60}}}}}}}}},"/tx-builder/api/actions/{chain}/{vault_address}/{strategist_address}/constraints/{route}":{"get":{"tags":["Transaction Builder"],"summary":"Get Route Constraints","operationId":"get_route_constraints_tx_builder_api_actions__chain___vault_address___strategist_address__constraints__route__get","parameters":[{"name":"route","in":"path","required":true,"schema":{"type":"string","title":"Route"}},{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"vault_address","in":"path","required":true,"schema":{"type":"string","title":"Vault Address"}},{"name":"strategist_address","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Strategist Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Unauthorized — missing or malformed Authorization header.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Unauthorized"}}}}}},"403":{"description":"Forbidden — API key invalid, revoked, expired, or insufficient permissions for this action or resource.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Forbidden"}}}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Too Many Requests"},"retry_after":{"type":"integer","example":60}}}}}}}}},"/tx-builder/api/execute/{chain}/{vault_address}/{tail}":{"post":{"tags":["Transaction Builder"],"summary":"Execute Action","operationId":"execute_action_tx_builder_api_execute__chain___vault_address___tail__post","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"vault_address","in":"path","required":true,"schema":{"type":"string","title":"Vault Address"}},{"name":"tail","in":"path","required":true,"schema":{"type":"string","title":"Tail"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteActionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Unauthorized — missing or malformed Authorization header.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Unauthorized"}}}}}},"403":{"description":"Forbidden — API key invalid, revoked, expired, or insufficient permissions for this action or resource.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Forbidden"}}}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Too Many Requests"},"retry_after":{"type":"integer","example":60}}}}}}}}},"/tx-builder/api/execute-multiple/{chain}/{vault_address}/{strategist_address}":{"post":{"tags":["Transaction Builder"],"summary":"Execute Multiple Actions","operationId":"execute_multiple_actions_tx_builder_api_execute_multiple__chain___vault_address___strategist_address__post","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"vault_address","in":"path","required":true,"schema":{"type":"string","title":"Vault Address"}},{"name":"strategist_address","in":"path","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Strategist Address"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteMultipleRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Unauthorized — missing or malformed Authorization header.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Unauthorized"}}}}}},"403":{"description":"Forbidden — API key invalid, revoked, expired, or insufficient permissions for this action or resource.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Forbidden"}}}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Too Many Requests"},"retry_after":{"type":"integer","example":60}}}}}}}}},"/vaults":{"get":{"tags":["vaults"],"summary":"List Vaults","operationId":"list_vaults_public_v1_vaults_get","parameters":[{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Vaults Public V1 Vaults Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/vault-registry_HTTPValidationError"}}}},"401":{"description":"Unauthorized — missing or malformed Authorization header.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Unauthorized"}}}}}},"403":{"description":"Forbidden — API key invalid, revoked, expired, or insufficient permissions for this action or resource.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Forbidden"}}}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Too Many Requests"},"retry_after":{"type":"integer","example":60}}}}}}}}},"/trees/{root_hash}":{"get":{"tags":["trees"],"summary":"Get Tree","operationId":"get_tree_public_v1_trees__root_hash__get","parameters":[{"name":"root_hash","in":"path","required":true,"schema":{"type":"string","title":"Root Hash"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Tree Public V1 Trees  Root Hash  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/vault-registry_HTTPValidationError"}}}},"401":{"description":"Unauthorized — missing or malformed Authorization header.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Unauthorized"}}}}}},"403":{"description":"Forbidden — API key invalid, revoked, expired, or insufficient permissions for this action or resource.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Forbidden"}}}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Too Many Requests"},"retry_after":{"type":"integer","example":60}}}}}}}}},"/vaults/{chain}/{vault_address}/roots":{"get":{"tags":["vaults"],"summary":"List Vault Roots","operationId":"list_vault_roots_public_v1_vaults__chain___vault_address__roots_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"vault_address","in":"path","required":true,"schema":{"type":"string","title":"Vault Address"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Vault Roots Public V1 Vaults  Chain   Vault Address  Roots Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/vault-registry_HTTPValidationError"}}}},"401":{"description":"Unauthorized — missing or malformed Authorization header.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Unauthorized"}}}}}},"403":{"description":"Forbidden — API key invalid, revoked, expired, or insufficient permissions for this action or resource.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Forbidden"}}}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Too Many Requests"},"retry_after":{"type":"integer","example":60}}}}}}}}},"/vaults/{chain}/{vault_address}/dailyData":{"get":{"tags":["vaults"],"summary":"Get Daily Data","operationId":"get_daily_data_public_v1_vaults__chain___vault_address__dailyData_get","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","title":"Chain"}},{"name":"vault_address","in":"path","required":true,"schema":{"type":"string","title":"Vault Address"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO-8601 UTC start of range (inclusive). Defaults to earliest.","title":"From"},"description":"ISO-8601 UTC start of range (inclusive). Defaults to earliest."},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO-8601 UTC end of range (inclusive). Defaults to latest.","title":"To"},"description":"ISO-8601 UTC end of range (inclusive). Defaults to latest."},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque pagination cursor from a prior page; resend with the same from/to and page_size.","title":"Cursor"},"description":"Opaque pagination cursor from a prior page; resend with the same from/to and page_size."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Daily Data Public V1 Vaults  Chain   Vault Address  Dailydata Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/tvl-breakdown_HTTPValidationError"}}}},"401":{"description":"Unauthorized — missing or malformed Authorization header.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Unauthorized"}}}}}},"403":{"description":"Forbidden — API key invalid, revoked, expired, or insufficient permissions for this action or resource.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Forbidden"}}}}}},"429":{"description":"Too Many Requests - Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Too Many Requests"},"retry_after":{"type":"integer","example":60}}}}}}}}}},"components":{"schemas":{"ExecuteMultipleRequest":{"properties":{"actions":{"items":{"$ref":"#/components/schemas/BatchAction"},"type":"array","title":"Actions"},"verbose":{"type":"boolean","title":"Verbose","default":false},"skip_sim":{"type":"boolean","title":"Skip Sim","default":false}},"type":"object","required":["actions"],"title":"ExecuteMultipleRequest"},"BatchAction":{"properties":{"route":{"type":"string","title":"Route"},"params":{"additionalProperties":true,"type":"object","title":"Params"}},"type":"object","required":["route"],"title":"BatchAction"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"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"},"ExecuteActionRequest":{"properties":{"params":{"additionalProperties":true,"type":"object","title":"Params"},"verbose":{"type":"boolean","title":"Verbose","default":false},"skip_sim":{"type":"boolean","title":"Skip Sim","default":false}},"type":"object","title":"ExecuteActionRequest"},"vault-registry_HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/vault-registry_ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"vault-registry_ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"tvl-breakdown_HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/tvl-breakdown_ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"tvl-breakdown_ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"apiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"VedaApiKey","description":"Veda customer API key. Format: `veda_user_live_<...>`.\nPaste the key value (without the `Bearer ` prefix) into the Authorize dialog.\n"}}},"security":[{"apiKeyAuth":[]}]}