{
"error": {
"code": "BUNDLE_ADDRESS_NOT_IN_ADDRESS_BOOK",
"message": "Not in the address book: 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984. Add them before bundling them.",
"addresses": [
"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"
]
}
}
{
"error": {
"code": "INTERNAL_ERROR",
"message": "Error while fetching the address book"
}
}
Address Book
Add Address Book Entries
Add one or more addresses to the address book. An address already in the book keeps its existing label — this endpoint never overwrites one. Only addresses not already in the book count against the account’s non-paid address quota. Returns the entire address book after the add, not just the entries sent.
Cost: 1 credit per call. Automatically refunded on 4xx/5xx responses.
Access: Requires portfolio entitlement — the same flag that unlocks /v1/portfolio.
Rate limit: 360 req/min (shared with portfolio bucket)
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Octav Developer Docs","colors":{"primary":"#3F58C7","light":"#3F58C7","dark":"#3F58C7"},"logo":{"light":"https://mintcdn.com/octav-0131e508/2gyC7pExzkUX19Dg/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=2gyC7pExzkUX19Dg\u0026q=85\u0026s=92e2a8765699a7dd5bf6865ba6982a57","dark":"https://mintcdn.com/octav-0131e508/2gyC7pExzkUX19Dg/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=2gyC7pExzkUX19Dg\u0026q=85\u0026s=bdad359bca801022a62e0bf37fdd4772"},"favicon":"https://mintcdn.com/octav-0131e508/2NMEPTfdgJ6_kBbR/logo/[email protected]?fit=max\u0026auto=format\u0026n=2NMEPTfdgJ6_kBbR\u0026q=85\u0026s=d58eac966f24e31a99fc78e6d05765f0","api":{"playground":{},"mdx":{"auth":{"method":"bearer"},"server":"https://api.octav.fi/v1"}},"navbar":{"links":[{"icon":"newspaper","href":"https://octav.fi/blog","label":"Blog"},{"icon":"discord","href":"https://discord.com/invite/qvcknAa73A","label":"Get Help"},{"icon":"/logo/[email protected]","href":"https://data.octav.fi/","label":"Dev Portal"}]},"metadata":{"timestamp":false},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"octav-0131e508","hasAudioNarration":false,"actualSubdomain":"octav-0131e508","customDomains":["docs.octav.fi"],"gitSource":{"type":"github","owner":"octav-labs","repo":"docs.octav.fi","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6accf6d14d87a029cf478de8","collectionId":"f0548183-22cc-4e69-8eda-d87d3e42878c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6accf6d14d87a029cf478de8"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6accf6d14d87a029cf478de8","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"API","count":85},{"language":"default","tag":"Playground","count":41},{"language":"default","tag":"Endpoints","count":21},{"language":"default","tag":"Docs","count":18},{"language":"default","tag":"Migrate to Octav","count":9},{"language":"default","tag":"Beacon Validators","count":8},{"language":"default","tag":"AI Development","count":7},{"language":"default","tag":"Using Octav","count":7},{"language":"default","tag":"Bundles","count":7},{"language":"default","tag":"CLI","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"octav-styles.css","content":":root{--octav-primary:#3F58C7;--octav-primary-hover:#2F4AA7;--octav-primary-rgb:63, 88, 199;--octav-ui-blue:#3F58C7;--octav-sky-blue:#6BCCD1;--octav-mint-green:#59CE7E;--octav-light-gold:#F4BD4D;--octav-mango-orange:#F68A54;--octav-white:#FFFFFF;--octav-tan:#F9F6F3;--octav-buff:#EFEBE4;--octav-blue-charcoal:#091018;--octav-deep-sea:#06323E;--octav-sea-green:#095762;--octav-sea-foam:#558789;--octav-font-heading:'Space Grotesk', sans-serif;--octav-font-body:'Geist', sans-serif;--octav-font-mono:'Geist Mono', monospace}.h1,h1{font-family:var(--octav-font-heading);font-weight:500;line-height:100%;letter-spacing:-.02em}.h2,body,h2{font-family:var(--octav-font-body)}.h2,.h3,h2,h3{font-weight:500;line-height:100%;letter-spacing:0}.h3,h3{font-family:var(--octav-font-mono);font-weight:400;letter-spacing:.05em;text-transform:uppercase}body{line-height:120%;letter-spacing:.02em}.octav-btn-primary{background-color:var(--octav-primary);color:var(--octav-white)}.octav-btn-primary:hover{background-color:var(--octav-primary-hover);transform:translateY(-1px);box-shadow:0 4px 12px rgba(255,26,69,.3)}.octav-btn-outline,.octav-btn-primary,.octav-btn-secondary{padding:.75rem 1.5rem;border-radius:.5rem;font-weight:500;transition:all .2s}.octav-btn-secondary{background-color:var(--octav-ui-blue);color:var(--octav-white)}.octav-btn-secondary:hover{background-color:#2f4aa7;transform:translateY(-1px);box-shadow:0 4px 12px rgba(63,88,199,.3)}.octav-btn-outline{border:2px solid var(--octav-primary);color:var(--octav-primary);background-color:transparent}.octav-btn-outline:hover{background-color:var(--octav-primary);color:var(--octav-white)}.octav-card{background:var(--octav-white);border-radius:.75rem;padding:1.5rem;box-shadow:0 2px 8px rgba(0,0,0,.08);transition:all .2s}.octav-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.12);transform:translateY(-2px)}@media (prefers-color-scheme:dark){:root{--background:var(--octav-blue-charcoal);--foreground:var(--octav-white)}.octav-card{background:var(--octav-deep-sea);box-shadow:0 2px 8px rgba(0,0,0,.3)}}.octav-accent-1,a{color:var(--octav-primary)}.octav-accent-2{color:var(--octav-ui-blue)}.octav-accent-3{color:var(--octav-sky-blue)}.octav-accent-4{color:var(--octav-mint-green)}.octav-accent-5{color:var(--octav-light-gold)}.octav-accent-6{color:var(--octav-mango-orange)}.octav-bg-accent-1{background-color:var(--octav-primary)}.octav-bg-accent-2{background-color:var(--octav-ui-blue)}.octav-bg-accent-3{background-color:var(--octav-sky-blue)}.octav-bg-accent-4{background-color:var(--octav-mint-green)}.octav-bg-accent-5{background-color:var(--octav-light-gold)}.octav-bg-accent-6{background-color:var(--octav-mango-orange)}code,pre{font-family:var(--octav-font-mono)}a{transition:color .2s}a:hover{color:var(--octav-primary-hover)}nav a[href*=\"data.octav.fi\"],nav a[href*=discord]{border-radius:.75rem!important;transition:all .2s ease!important;display:inline-flex!important;align-items:center!important;gap:.5rem!important}nav a[href*=discord]{background-color:rgba(63,88,199,.1)!important;color:var(--octav-ui-blue)!important;border:1px solid rgba(63,88,199,.2)!important;padding:.5rem 1rem!important;font-weight:500!important}nav a[href*=discord]:hover{background-color:rgba(63,88,199,.15)!important;border-color:rgba(63,88,199,.3)!important;transform:translateY(-1px)!important}nav a[href*=\"data.octav.fi\"]{background:linear-gradient(135deg,#3f58c7 0,#2f4aa7 100%)!important;color:#fff!important;padding:.5rem 1.25rem!important;font-weight:600!important;box-shadow:0 2px 8px rgba(63,88,199,.25)!important;border:0!important}nav a[href*=\"data.octav.fi\"]:hover{background:linear-gradient(135deg,#2f4aa7 0,#3f58c7 100%)!important;box-shadow:0 4px 12px rgba(63,88,199,.35)!important;transform:translateY(-2px)!important}nav a[href*=\"data.octav.fi\"] svg,nav a[href*=discord] svg{width:1rem!important;height:1rem!important}@media (prefers-color-scheme:dark){nav a[href*=discord]{background-color:rgba(63,88,199,.15)!important;border-color:rgba(63,88,199,.3)!important;color:#7b9bff!important}nav a[href*=discord]:hover{background-color:rgba(63,88,199,.25)!important;border-color:rgba(63,88,199,.4)!important}}"},{"filePath":"custom.css","content":".action-button,.cta-button,.primary-button,a.action-button,a.cta-button,a.primary-button,button.action-button,button.primary-button,button[type=submit],input[type=button],input[type=submit]{border:0 solid #2a303b;border-radius:4px;border-image:none;box-sizing:border-box;display:flex;align-items:center;justify-content:center;flex-shrink:0;height:36px;padding:10px 16px;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";font-size:15px;font-weight:600;line-height:20px;letter-spacing:normal;font-feature-settings:normal;font-variation-settings:normal;text-decoration:none;-webkit-font-smoothing:antialiased;background-color:#3f58c7;column-gap:8px;margin:0;cursor:pointer;appearance:button;opacity:1;outline:0;-webkit-tap-highlight-color:transparent;transition:all .2s ease;color:#fff!important}.action-button:hover,.cta-button:hover,.primary-button:hover,a.action-button:hover,a.cta-button:hover,a.primary-button:hover,button.action-button:hover,button.primary-button:hover,button[type=submit]:hover,input[type=button]:hover,input[type=submit]:hover{background-color:#5366d4!important;transform:translateY(-1px);box-shadow:0 4px 12px rgba(63,88,199,.3)}.action-button:active,.cta-button:active,.primary-button:active,a.action-button:active,a.cta-button:active,a.primary-button:active,button.action-button:active,button.primary-button:active,button[type=submit]:active,input[type=button]:active,input[type=submit]:active{transform:translateY(0)}.action-button:focus-visible,.cta-button:focus-visible,.primary-button:focus-visible,a.action-button:focus-visible,a.cta-button:focus-visible,a.primary-button:focus-visible,button.action-button:focus-visible,button.primary-button:focus-visible,button[type=submit]:focus-visible,input[type=button]:focus-visible,input[type=submit]:focus-visible{outline:2px solid #3f58c7;outline-offset:2px}.action-button:disabled,.cta-button:disabled,.primary-button:disabled,button.action-button:disabled,button.primary-button:disabled,button[type=submit]:disabled,input[type=button]:disabled,input[type=submit]:disabled{opacity:.5;cursor:not-allowed}.button-secondary,.secondary-button{background-color:transparent;border:1px solid oklch(.5058 .1748 269.54);color:oklch(.5058 .1748 269.54)}.button-text,.text-button{background-color:transparent;border:0;color:oklch(.5058 .1748 269.54);padding:4px 8px;height:auto}[class*=header] a[href*=\"beta.octav.fi\"],[class*=header] a[href*=\"data.octav.fi\"],[class*=navbar] a[href*=\"beta.octav.fi\"],[class*=navbar] a[href*=\"data.octav.fi\"],header a[href*=\"beta.octav.fi\"],header a[href*=\"data.octav.fi\"],nav a[href*=\"beta.octav.fi\"],nav a[href*=\"data.octav.fi\"]{border:0 solid #2a303b;border-radius:4px;border-image:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;height:36px;padding:10px 16px!important;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";font-size:15px!important;font-weight:600!important;line-height:20px;letter-spacing:normal;text-decoration:none!important;-webkit-font-smoothing:antialiased;background-color:#3f58c7!important;gap:8px;margin:0;margin-left:8px!important;cursor:pointer;opacity:1;-webkit-tap-highlight-color:transparent;transition:all .2s ease;order:2}[class*=header] a[href*=\"beta.octav.fi\"] img,[class*=header] a[href*=\"data.octav.fi\"] img,[class*=navbar] a[href*=\"beta.octav.fi\"] img,[class*=navbar] a[href*=\"data.octav.fi\"] img,header a[href*=\"beta.octav.fi\"] img,header a[href*=\"data.octav.fi\"] img,nav a[href*=\"beta.octav.fi\"] img,nav a[href*=\"data.octav.fi\"] img{width:16px!important;height:16px!important;object-fit:contain!important}.dark [class*=header] a[href*=\"beta.octav.fi\"],.dark [class*=header] a[href*=\"data.octav.fi\"],.dark [class*=navbar] a[href*=\"beta.octav.fi\"],.dark [class*=navbar] a[href*=\"data.octav.fi\"],.dark header a[href*=\"beta.octav.fi\"],.dark header a[href*=\"data.octav.fi\"],.dark nav a[href*=\"beta.octav.fi\"],.dark nav a[href*=\"data.octav.fi\"],.light [class*=header] a[href*=\"beta.octav.fi\"],.light [class*=header] a[href*=\"data.octav.fi\"],.light [class*=navbar] a[href*=\"beta.octav.fi\"],.light [class*=navbar] a[href*=\"data.octav.fi\"],.light header a[href*=\"beta.octav.fi\"],.light header a[href*=\"data.octav.fi\"],.light nav a[href*=\"beta.octav.fi\"],.light nav a[href*=\"data.octav.fi\"],[class*=header] a[href*=\"beta.octav.fi\"],[class*=header] a[href*=\"data.octav.fi\"],[class*=navbar] a[href*=\"beta.octav.fi\"],[class*=navbar] a[href*=\"data.octav.fi\"],header a[href*=\"beta.octav.fi\"],header a[href*=\"data.octav.fi\"],nav a[href*=\"beta.octav.fi\"],nav a[href*=\"data.octav.fi\"]{color:#fff!important}[class*=header] a[href*=\"beta.octav.fi\"]:hover,[class*=header] a[href*=\"data.octav.fi\"]:hover,[class*=navbar] a[href*=\"beta.octav.fi\"]:hover,[class*=navbar] a[href*=\"data.octav.fi\"]:hover,header a[href*=\"beta.octav.fi\"]:hover,header a[href*=\"data.octav.fi\"]:hover,nav a[href*=\"beta.octav.fi\"]:hover,nav a[href*=\"data.octav.fi\"]:hover{background-color:#5366d4!important;transform:translateY(-1px);box-shadow:0 4px 12px rgba(63,88,199,.3)}[class*=header] a[href*=discord],[class*=navbar] a[href*=discord],header a[href*=discord],nav a[href*=discord]{background-color:transparent!important;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px!important;margin:0;font-family:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";text-decoration:none!important;-webkit-font-smoothing:antialiased;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .2s ease;order:1}[class*=header] a[href*=discord]:hover,[class*=navbar] a[href*=discord]:hover,header a[href*=discord]:hover,nav a[href*=discord]:hover{opacity:.8}"}],"page":{"pagePath":"api-reference/address-book/add-address-book-entries","slug":"/api-reference/address-book/add-address-book-entries","pageMetadata":{"title":"Add Address Book Entries","description":"Add one or more addresses to the address book. An address already in the book keeps its existing label — this endpoint never overwrites one. Only addresses not already in the book count against the account's non-paid address quota. Returns the entire address book after the add, not just the entries sent.\n\n**Cost:** 1 credit per call. Automatically refunded on 4xx/5xx responses.\n\n**Access:** Requires portfolio entitlement — the same flag that unlocks `/v1/portfolio`.\n\n**Rate limit:** 360 req/min (shared with portfolio bucket)\n\n**Get your API key:** [Dev Portal](https://data.octav.fi)","deprecated":null,"version":null,"openapi":"/openapi.json post /addressbook","href":"/api-reference/address-book/add-address-book-entries","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Add one or more addresses to the address book. An address already in the book keeps its existing label — this endpoint never overwrites one. Only addresses not already in the book count against the account’s non-paid address quota. Returns the entire address book after the add, not just the entries sent.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Cost:\"\n }), \" 1 credit per call. Automatically refunded on 4xx/5xx responses.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Access:\"\n }), \" Requires portfolio entitlement — the same flag that unlocks \", _jsx(_components.code, {\n children: \"/v1/portfolio\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Rate limit:\"\n }), \" 360 req/min (shared with portfolio bucket)\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Get your API key:\"\n }), \" \", _jsx(_components.a, {\n href: \"https://data.octav.fi\",\n children: \"Dev Portal\"\n })]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Add Address Book Entries","description":"Add one or more addresses to the address book. An address already in the book keeps its existing label — this endpoint never overwrites one. Only addresses not already in the book count against the account's non-paid address quota. Returns the entire address book after the add, not just the entries sent.\n\n**Cost:** 1 credit per call. Automatically refunded on 4xx/5xx responses.\n\n**Access:** Requires portfolio entitlement — the same flag that unlocks `/v1/portfolio`.\n\n**Rate limit:** 360 req/min (shared with portfolio bucket)\n\n**Get your API key:** [Dev Portal](https://data.octav.fi)","deprecated":null,"version":null,"openapi":"/openapi.json post /addressbook","href":"/api-reference/address-book/add-address-book-entries","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/octav-0131e508/200faeead307706b/public/tab-aware-button.js","/_mintlify/custom/octav-0131e508/0350487153b61ff7/public/chain-search.js","/_mintlify/custom/octav-0131e508/a0c713a10034fd6b/public/hotjar.js"],"openApiReferenceData":{"operation":{"summary":"Add Address Book Entries","description":"Add one or more addresses to the address book. An address already in the book keeps its existing label — this endpoint never overwrites one. Only addresses not already in the book count against the account's non-paid address quota. Returns the entire address book after the add, not just the entries sent.\n\n**Cost:** 1 credit per call. Automatically refunded on 4xx/5xx responses.\n\n**Access:** Requires portfolio entitlement — the same flag that unlocks `/v1/portfolio`.\n\n**Rate limit:** 360 req/min (shared with portfolio bucket)\n\n**Get your API key:** [Dev Portal](https://data.octav.fi)","operationId":"addAddressbookEntries","tags":["Address Book"],"requestBody":"d6643515-e0b6-4209-a0d3-06bbbf53f52f","responses":{"200":"b5935353-ee70-48b9-b3aa-5a8b899c51d9","400":"3f2f90e1-f94b-44cd-94ba-a8768a5671e5","401":"f3856b8f-6d7e-4887-8488-f48bcdb3374e","402":"ea7bf8de-948b-4831-b37d-e362b89d4a0a","404":"5fa18cc6-204b-41a3-a819-db5711108730","422":"11c39be4-cccb-45bf-b910-b8f106353a82","500":"17ee498d-0892-4a35-8f8f-22cbd671aaa5"},"security":["01810f81-1181-465d-9020-8784bafd38b2"],"method":"post","type":"path","servers":["c4fcc723-0cbf-45f7-9168-a9c26cac2659"],"path":"/addressbook","baseUrlOptions":["https://api.octav.fi/v1"],"title":"Add Address Book Entries","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entries":{"type":"array","minItems":1,"maxItems":100,"description":"Addresses to add. At least 1, at most 100 per request. Addresses must be unique within the request.","items":{"type":"object","properties":{"address":{"type":"string","description":"EVM, Solana, Starknet, or Tron address. Normalized server-side.","isRequired":true,"uniqueKey":"entries.items.[INDEX].address","typeLabel":"string"},"label":{"type":"string","maxLength":255,"description":"Optional name, up to 255 characters. May be an empty string. Defaults to \"\" when omitted, and is ignored for an address already in the book.","uniqueKey":"entries.items.[INDEX].label","typeLabel":"string"}},"required":["address"],"uniqueKey":"entries.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"entries","typeLabel":"object[]"}},"required":["entries"],"example":{"entries":[{"address":"0x6426af179aabebe47666f345d69fd9079673f6cd","label":"Treasury"},{"address":"9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"}]},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"entries":[{"address":"0x6426af179aabebe47666f345d69fd9079673f6cd","label":"Treasury"},{"address":"9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"b5935353-ee70-48b9-b3aa-5a8b899c51d9":{"description":"The full address book after the add","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"An address book entry. Keyed by address — there is no id field.","properties":{"address":{"type":"string","description":"The normalized wallet address. This is the entry's identifier; use it in the path of the rename and remove endpoints.","uniqueKey":"data.items.[INDEX].address","typeLabel":"string"},"label":{"type":"string","description":"User-defined name. Empty string when no label was given.","uniqueKey":"data.items.[INDEX].label","typeLabel":"string"},"plan":{"type":"string","enum":["FREE","LITE","PRO"],"description":"Plan covering this address.","uniqueKey":"data.items.[INDEX].plan","typeLabel":"enum\u003cstring>"},"expiresAt":{"oneOf":[{"type":"string","format":"date-time","description":"When the plan on this address lapses. null on FREE addresses, which never had a paid period.","uniqueKey":"data.items.[INDEX].expiresAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the plan on this address lapses. null on FREE addresses, which never had a paid period.","uniqueKey":"data.items.[INDEX].expiresAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].expiresAt","typeLabel":"string\u003cdate-time> | null"},"isPaid":{"type":"boolean","description":"Derived from expiresAt: true only when expiresAt is set and still in the future. A lapsed paid address reports false while keeping its expiresAt.","uniqueKey":"data.items.[INDEX].isPaid","typeLabel":"boolean"}},"example":{"address":"0x6426af179aabebe47666f345d69fd9079673f6cd","label":"Treasury","plan":"PRO","expiresAt":"2026-11-01T00:00:00.000Z","isPaid":true},"uniqueKey":"data.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":[{"address":"0x6426af179aabebe47666f345d69fd9079673f6cd","label":"Treasury","plan":"PRO","expiresAt":"2026-11-01T00:00:00.000Z","isPaid":true},{"address":"9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM","label":"","plan":"FREE","expiresAt":null,"isPaid":false}]},"examples":{"Example":{"title":"Example","value":{"data":[{"address":"0x6426af179aabebe47666f345d69fd9079673f6cd","label":"Treasury","plan":"PRO","expiresAt":"2026-11-01T00:00:00.000Z","isPaid":true},{"address":"9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM","label":"","plan":"FREE","expiresAt":null,"isPaid":false}]}}},"exampleType":"examples"}},"exampleType":"examples"},"3f2f90e1-f94b-44cd-94ba-a8768a5671e5":{"description":"VALIDATION_ERROR — an address is malformed or unsupported, or the request repeats an address. Request-schema failures instead return the API-wide { \"error\": \"Validation Failed\", \"details\": [...] } shape, and are rejected before any credit is reserved.","content":{"application/json":{"schema":{"type":"object","description":"Domain failures on the address book and bundle routes answer with this envelope. Some codes add extra fields alongside code and message.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["VALIDATION_ERROR","UNAUTHORIZED","ADDRESSBOOK_ENTRY_NOT_FOUND","ADDRESSBOOK_QUOTA_REACHED","ADDRESSBOOK_ENTRY_NOT_DELETABLE","BUNDLE_NOT_FOUND","BUNDLE_QUOTA_REACHED","BUNDLE_SIZE_LIMIT_EXCEEDED","BUNDLE_NAME_TAKEN","BUNDLE_MEMBERS_ALREADY_BUNDLED","BUNDLE_EMPTY","BUNDLE_ADDRESS_NOT_IN_ADDRESS_BOOK","DELEGATE_NOT_FOUND","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"quota":{"type":"integer","description":"The limit that was reached.","uniqueKey":"error.quota","typeLabel":"integer"},"current":{"type":"integer","description":"Current count against that limit.","uniqueKey":"error.current","typeLabel":"integer"},"limit":{"type":"integer","description":"Maximum addresses a bundle may hold.","uniqueKey":"error.limit","typeLabel":"integer"},"name":{"type":"string","description":"Bundle name that is already taken.","uniqueKey":"error.name","typeLabel":"string"},"bundleId":{"type":"string","description":"Bundle that already holds these addresses.","uniqueKey":"error.bundleId","typeLabel":"string"},"addresses":{"type":"array","items":{"type":"string","uniqueKey":"error.addresses.items.[INDEX]","typeLabel":"string"},"description":"Addresses that are not in the address book.","uniqueKey":"error.addresses","typeLabel":"string[]"}},"required":["code","message"],"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"VALIDATION_ERROR","message":"One or more addresses are invalid"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"VALIDATION_ERROR","message":"One or more addresses are invalid"}}}},"exampleType":"examples"}},"exampleType":"examples"},"f3856b8f-6d7e-4887-8488-f48bcdb3374e":{"description":"Missing or invalid Bearer token","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Unauthorized","uniqueKey":"message","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Unauthorized"}}},"exampleType":"generated"}},"exampleType":"generated"},"ea7bf8de-948b-4831-b37d-e362b89d4a0a":{"description":"Insufficient credit balance. Credit is refunded automatically.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Not enough credits","uniqueKey":"message","typeLabel":"string"},"creditsRequired":{"type":"number","example":1,"uniqueKey":"creditsRequired","typeLabel":"number"},"creditsAvailable":{"type":"number","example":0,"uniqueKey":"creditsAvailable","typeLabel":"number"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Not enough credits","creditsRequired":1,"creditsAvailable":0}}},"exampleType":"generated"}},"exampleType":"generated"},"5fa18cc6-204b-41a3-a819-db5711108730":{"description":"ADDRESSBOOK_ENTRY_NOT_FOUND, BUNDLE_NOT_FOUND, or DELEGATE_NOT_FOUND.","content":{"application/json":{"schema":{"type":"object","description":"Domain failures on the address book and bundle routes answer with this envelope. Some codes add extra fields alongside code and message.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["VALIDATION_ERROR","UNAUTHORIZED","ADDRESSBOOK_ENTRY_NOT_FOUND","ADDRESSBOOK_QUOTA_REACHED","ADDRESSBOOK_ENTRY_NOT_DELETABLE","BUNDLE_NOT_FOUND","BUNDLE_QUOTA_REACHED","BUNDLE_SIZE_LIMIT_EXCEEDED","BUNDLE_NAME_TAKEN","BUNDLE_MEMBERS_ALREADY_BUNDLED","BUNDLE_EMPTY","BUNDLE_ADDRESS_NOT_IN_ADDRESS_BOOK","DELEGATE_NOT_FOUND","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"quota":{"type":"integer","description":"The limit that was reached.","uniqueKey":"error.quota","typeLabel":"integer"},"current":{"type":"integer","description":"Current count against that limit.","uniqueKey":"error.current","typeLabel":"integer"},"limit":{"type":"integer","description":"Maximum addresses a bundle may hold.","uniqueKey":"error.limit","typeLabel":"integer"},"name":{"type":"string","description":"Bundle name that is already taken.","uniqueKey":"error.name","typeLabel":"string"},"bundleId":{"type":"string","description":"Bundle that already holds these addresses.","uniqueKey":"error.bundleId","typeLabel":"string"},"addresses":{"type":"array","items":{"type":"string","uniqueKey":"error.addresses.items.[INDEX]","typeLabel":"string"},"description":"Addresses that are not in the address book.","uniqueKey":"error.addresses","typeLabel":"string[]"}},"required":["code","message"],"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"BUNDLE_NOT_FOUND","message":"Bundle not found"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"BUNDLE_NOT_FOUND","message":"Bundle not found"}}}},"exampleType":"examples"}},"exampleType":"examples"},"11c39be4-cccb-45bf-b910-b8f106353a82":{"description":"A business rule rejected the request: ADDRESSBOOK_QUOTA_REACHED (adds quota, current), BUNDLE_QUOTA_REACHED (adds quota), BUNDLE_SIZE_LIMIT_EXCEEDED (adds limit), BUNDLE_EMPTY, or BUNDLE_ADDRESS_NOT_IN_ADDRESS_BOOK (adds addresses).","content":{"application/json":{"schema":{"type":"object","description":"Domain failures on the address book and bundle routes answer with this envelope. Some codes add extra fields alongside code and message.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["VALIDATION_ERROR","UNAUTHORIZED","ADDRESSBOOK_ENTRY_NOT_FOUND","ADDRESSBOOK_QUOTA_REACHED","ADDRESSBOOK_ENTRY_NOT_DELETABLE","BUNDLE_NOT_FOUND","BUNDLE_QUOTA_REACHED","BUNDLE_SIZE_LIMIT_EXCEEDED","BUNDLE_NAME_TAKEN","BUNDLE_MEMBERS_ALREADY_BUNDLED","BUNDLE_EMPTY","BUNDLE_ADDRESS_NOT_IN_ADDRESS_BOOK","DELEGATE_NOT_FOUND","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"quota":{"type":"integer","description":"The limit that was reached.","uniqueKey":"error.quota","typeLabel":"integer"},"current":{"type":"integer","description":"Current count against that limit.","uniqueKey":"error.current","typeLabel":"integer"},"limit":{"type":"integer","description":"Maximum addresses a bundle may hold.","uniqueKey":"error.limit","typeLabel":"integer"},"name":{"type":"string","description":"Bundle name that is already taken.","uniqueKey":"error.name","typeLabel":"string"},"bundleId":{"type":"string","description":"Bundle that already holds these addresses.","uniqueKey":"error.bundleId","typeLabel":"string"},"addresses":{"type":"array","items":{"type":"string","uniqueKey":"error.addresses.items.[INDEX]","typeLabel":"string"},"description":"Addresses that are not in the address book.","uniqueKey":"error.addresses","typeLabel":"string[]"}},"required":["code","message"],"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"BUNDLE_ADDRESS_NOT_IN_ADDRESS_BOOK","message":"Not in the address book: 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984. Add them before bundling them.","addresses":["0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"]}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"BUNDLE_ADDRESS_NOT_IN_ADDRESS_BOOK","message":"Not in the address book: 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984. Add them before bundling them.","addresses":["0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"]}}}},"exampleType":"examples"}},"exampleType":"examples"},"17ee498d-0892-4a35-8f8f-22cbd671aaa5":{"description":"INTERNAL_ERROR — unexpected server-side failure. The reserved credit is refunded.","content":{"application/json":{"schema":{"type":"object","description":"Domain failures on the address book and bundle routes answer with this envelope. Some codes add extra fields alongside code and message.","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["VALIDATION_ERROR","UNAUTHORIZED","ADDRESSBOOK_ENTRY_NOT_FOUND","ADDRESSBOOK_QUOTA_REACHED","ADDRESSBOOK_ENTRY_NOT_DELETABLE","BUNDLE_NOT_FOUND","BUNDLE_QUOTA_REACHED","BUNDLE_SIZE_LIMIT_EXCEEDED","BUNDLE_NAME_TAKEN","BUNDLE_MEMBERS_ALREADY_BUNDLED","BUNDLE_EMPTY","BUNDLE_ADDRESS_NOT_IN_ADDRESS_BOOK","DELEGATE_NOT_FOUND","INTERNAL_ERROR"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"quota":{"type":"integer","description":"The limit that was reached.","uniqueKey":"error.quota","typeLabel":"integer"},"current":{"type":"integer","description":"Current count against that limit.","uniqueKey":"error.current","typeLabel":"integer"},"limit":{"type":"integer","description":"Maximum addresses a bundle may hold.","uniqueKey":"error.limit","typeLabel":"integer"},"name":{"type":"string","description":"Bundle name that is already taken.","uniqueKey":"error.name","typeLabel":"string"},"bundleId":{"type":"string","description":"Bundle that already holds these addresses.","uniqueKey":"error.bundleId","typeLabel":"string"},"addresses":{"type":"array","items":{"type":"string","uniqueKey":"error.addresses.items.[INDEX]","typeLabel":"string"},"description":"Addresses that are not in the address book.","uniqueKey":"error.addresses","typeLabel":"string[]"}},"required":["code","message"],"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"INTERNAL_ERROR","message":"Error while fetching the address book"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"INTERNAL_ERROR","message":"Error while fetching the address book"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"01810f81-1181-465d-9020-8784bafd38b2":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[]}}},"servers":{"c4fcc723-0cbf-45f7-9168-a9c26cac2659":{"url":"https://api.octav.fi/v1","description":"Production API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"octav-0131e508","siteName":"Octav Developer Docs","title":"Add Address Book Entries - Octav Developer Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-14T20:56:33.881Z","originalFileLocation":"api-reference/address-book/add-address-book-entries.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Add one or more addresses to the address book. An address already in the book keeps its existing label — this endpoint never overwrites one. Only addresses not already in the book count against the account\u0026#x27;s non-paid address quota. Returns the entire address book after the add, not just the entries sent. Cost: 1 credit per call. Automatically refunded on 4xx/5xx responses. Access: Requires portfolio entitlement — the same flag that unlocks /v1/portfolio. Rate limit: 360 req/min (shared with portfolio bucket) Get your API key: Dev Portal\">\u003cmeta data-mint-head name=\"application-name\" content=\"Octav Developer Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/octav-0131e508/_VU6qAj-9A2vYfAU/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/octav-0131e508/_VU6qAj-9A2vYfAU/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/octav-0131e508/_VU6qAj-9A2vYfAU/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/octav-0131e508/_VU6qAj-9A2vYfAU/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/octav-0131e508/_VU6qAj-9A2vYfAU/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/octav-0131e508/_VU6qAj-9A2vYfAU/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/octav-0131e508/_VU6qAj-9A2vYfAU/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/octav-0131e508/_VU6qAj-9A2vYfAU/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/octav-0131e508/_VU6qAj-9A2vYfAU/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Add Address Book Entries - Octav Developer Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Add one or more addresses to the address book. An address already in the book keeps its existing label — this endpoint never overwrites one. Only addresses not already in the book count against the account\u0026#x27;s non-paid address quota. Returns the entire address book after the add, not just the entries sent. Cost: 1 credit per call. Automatically refunded on 4xx/5xx responses. Access: Requires portfolio entitlement — the same flag that unlocks /v1/portfolio. Rate limit: 360 req/min (shared with portfolio bucket) Get your API key: Dev Portal\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Octav Developer Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.octav.fi/api-reference/address-book/add-address-book-entries\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://octav-0131e508.mintlify.app/_mintlify/api/og/v2?division=Address+Book\u0026amp;title=Add+Address+Book+Entries\u0026amp;description=Add+one+or+more+addresses+to+the+address+book.+An+address+already+in+the+book+keeps+its+existing+label+%E2%80%94+this+endpoint+never+overwrites+one.+Only+addresses+not+\u0026amp;theme=bc6018a277252670a540de65\u0026amp;signature=3c9e93532bfa43e9d9c59145236a02fffc73ddab11a74526387286882f5c45cd\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Add Address Book Entries - Octav Developer Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Add one or more addresses to the address book. An address already in the book keeps its existing label — this endpoint never overwrites one. Only addresses not already in the book count against the account\u0026#x27;s non-paid address quota. Returns the entire address book after the add, not just the entries sent. Cost: 1 credit per call. Automatically refunded on 4xx/5xx responses. Access: Requires portfolio entitlement — the same flag that unlocks /v1/portfolio. Rate limit: 360 req/min (shared with portfolio bucket) Get your API key: Dev Portal\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://octav-0131e508.mintlify.app/_mintlify/api/og/v2?division=Address+Book\u0026amp;title=Add+Address+Book+Entries\u0026amp;description=Add+one+or+more+addresses+to+the+address+book.+An+address+already+in+the+book+keeps+its+existing+label+%E2%80%94+this+endpoint+never+overwrites+one.+Only+addresses+not+\u0026amp;theme=bc6018a277252670a540de65\u0026amp;signature=3c9e93532bfa43e9d9c59145236a02fffc73ddab11a74526387286882f5c45cd\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/octav-0131e508/_VU6qAj-9A2vYfAU/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Octav Developer Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3F58C7\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.octav.fi/api-reference/address-book/add-address-book-entries\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/address-book/add-address-book-entries.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.octav.fi/#organization\",\"name\":\"Octav Developer Docs\",\"url\":\"https://docs.octav.fi\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/octav-0131e508/2gyC7pExzkUX19Dg/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=2gyC7pExzkUX19Dg\u0026q=85\u0026s=92e2a8765699a7dd5bf6865ba6982a57\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.octav.fi#website\",\"name\":\"Octav Developer Docs\",\"url\":\"https://docs.octav.fi\",\"publisher\":{\"@id\":\"https://docs.octav.fi/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.octav.fi/api-reference/address-book/add-address-book-entries#webpage\",\"url\":\"https://docs.octav.fi/api-reference/address-book/add-address-book-entries\",\"name\":\"Add Address Book Entries\",\"description\":\"Add one or more addresses to the address book. An address already in the book keeps its existing label — this endpoint never overwrites one. Only addresses not already in the book count against the account's non-paid address quota. Returns the entire address book after the add, not just the entries sent. Cost: 1 credit per call. Automatically refunded on 4xx/5xx responses. Access: Requires portfolio entitlement — the same flag that unlocks /v1/portfolio. Rate limit: 360 req/min (shared with portfolio bucket) Get your API key: Dev Portal\",\"dateModified\":\"2026-09-14T20:56:33.881Z\",\"isPartOf\":{\"@id\":\"https://docs.octav.fi#website\"},\"breadcrumb\":{\"@id\":\"https://docs.octav.fi/api-reference/address-book/add-address-book-entries#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.octav.fi/api-reference/address-book/add-address-book-entries#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Playground\",\"item\":\"https://docs.octav.fi/api-reference/portfolio/portfolio\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Address Book\",\"item\":\"https://docs.octav.fi/api-reference/address-book/list-address-book\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Add Address Book Entries\",\"item\":\"https://docs.octav.fi/api-reference/address-book/add-address-book-entries\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.octav.fi/api-reference/address-book/add-address-book-entries#apireference\",\"headline\":\"Add Address Book Entries\",\"name\":\"Add Address Book Entries\",\"description\":\"Add one or more addresses to the address book. An address already in the book keeps its existing label — this endpoint never overwrites one. Only addresses not already in the book count against the account's non-paid address quota. Returns the entire address book after the add, not just the entries sent. Cost: 1 credit per call. Automatically refunded on 4xx/5xx responses. Access: Requires portfolio entitlement — the same flag that unlocks /v1/portfolio. Rate limit: 360 req/min (shared with portfolio bucket) Get your API key: Dev Portal\",\"url\":\"https://docs.octav.fi/api-reference/address-book/add-address-book-entries\",\"mainEntityOfPage\":{\"@id\":\"https://docs.octav.fi/api-reference/address-book/add-address-book-entries#webpage\"},\"dateModified\":\"2026-09-14T20:56:33.881Z\",\"publisher\":{\"@id\":\"https://docs.octav.fi/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.octav.fi#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Octav Developer Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Octav Developer Docs","nav":{"global":null,"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/docs/quickstart"}]},{"tab":"API","groups":[{"group":"Getting Started","pages":[{"title":"Crypto Portfolio API","sidebarTitle":"Introduction","href":"/api/introduction"},{"title":"API Authentication \u0026 API Keys","sidebarTitle":"Authentication","href":"/api/authentication"},{"title":"API Quickstart: Your First Call","sidebarTitle":"Quickstart","href":"/api/quickstart"},{"title":"API Pricing \u0026 Credit Costs","sidebarTitle":"Pricing","href":"/api/pricing"}]},{"group":"Endpoints","pages":[{"title":"Portfolio","href":"/api/endpoints/portfolio"},{"title":"Portfolio At Block","href":"/api/endpoints/portfolio-at-block"},{"title":"Virtual Users Portfolio API","sidebarTitle":"Virtual Users","href":"/api/endpoints/virtual-users"},{"title":"Address Book","sidebarTitle":"Address Book","href":"/api/endpoints/addressbook"},{"title":"Bundles","sidebarTitle":"Bundles","href":"/api/endpoints/bundles"},{"title":"Nav","href":"/api/endpoints/nav"},{"title":"Wallet","href":"/api/endpoints/wallet"},{"title":"Crypto Transaction History API","sidebarTitle":"Transactions","href":"/api/endpoints/transactions"},{"title":"Token Approvals","href":"/api/endpoints/approvals"},{"title":"Token Overview","href":"/api/endpoints/token-overview"},{"title":"Solana Airdrop Eligibility API","sidebarTitle":"Airdrop","href":"/api/endpoints/airdrop"},{"title":"Subscribe Snapshot","href":"/api/endpoints/subscribe-snapshot"},{"title":"Historical Portfolio","href":"/api/endpoints/historical-portfolio"},{"title":"Sync Transactions","href":"/api/endpoints/sync"},{"title":"Chains","href":"/api/endpoints/chains"},{"title":"Protocols","href":"/api/endpoints/protocols"},{"title":"Contract Protocol","href":"/api/endpoints/contract-protocol"},{"title":"Status","href":"/api/endpoints/status"},{"title":"Credits","href":"/api/endpoints/credits"},{"title":"Beacon Validators","href":"/api/endpoints/beacon-validators"},{"title":"Agent Endpoints (x402)","href":"/api/endpoints/agent-x402"}]},{"group":"Playground","pages":[{"group":"Portfolio","pages":[{"title":"Portfolio","deprecated":null,"version":null,"openapi":"/openapi.json get /portfolio","href":"/api-reference/portfolio/portfolio"},{"title":"Portfolio At Block","deprecated":null,"version":null,"openapi":"/openapi.json get /portfolio/at-block","href":"/api-reference/portfolio/portfolio-at-block"},{"title":"Historical Portfolio","deprecated":null,"version":null,"openapi":"/openapi.json get /historical","href":"/api-reference/portfolio/historical-portfolio"}]},{"group":"Virtual Users","pages":[{"title":"List Virtual Users","deprecated":null,"version":null,"openapi":"/openapi.json get /virtual-users","href":"/api-reference/virtual-users/list-virtual-users"},{"title":"Virtual Users Portfolio","deprecated":null,"version":null,"openapi":"/openapi.json get /virtual-users/portfolio","href":"/api-reference/virtual-users/virtual-users-portfolio"}]},{"group":"Nav","pages":[{"title":"Nav","deprecated":null,"version":null,"openapi":"/openapi.json get /nav","href":"/api-reference/nav/nav"}]},{"group":"Wallet","pages":[{"title":"Wallet","deprecated":null,"version":null,"openapi":"/openapi.json get /wallet","href":"/api-reference/wallet/wallet"}]},{"group":"Transactions","pages":[{"title":"Transactions","deprecated":null,"version":null,"openapi":"/openapi.json get /transactions","href":"/api-reference/transactions/transactions"}]},{"group":"Approvals","pages":[{"title":"Token Approvals","deprecated":null,"version":null,"openapi":"/openapi.json get /approvals/{chain}","href":"/api-reference/approvals/token-approvals"}]},{"group":"Tokens","pages":[{"title":"Token Overview","deprecated":null,"version":null,"openapi":"/openapi.json get /token-overview","href":"/api-reference/tokens/token-overview"}]},{"group":"Airdrops","pages":[{"title":"Airdrop","deprecated":null,"version":null,"openapi":"/openapi.json get /airdrop","href":"/api-reference/airdrops/airdrop"}]},{"group":"Sync","pages":[{"title":"Sync Transactions","deprecated":null,"version":null,"openapi":"/openapi.json post /sync-transactions","href":"/api-reference/sync/sync-transactions"}]},{"group":"Chains","pages":[{"title":"Chains","deprecated":null,"version":null,"openapi":"/openapi.json get /chains","href":"/api-reference/chains/chains"},{"title":"Protocols","deprecated":null,"version":null,"openapi":"/openapi.json get /chains/{chainKey}/protocols","href":"/api-reference/chains/protocols"}]},{"group":"Contract Protocol","pages":[{"title":"Contract Protocol","deprecated":null,"version":null,"openapi":"/openapi.json get /contract-protocol","href":"/api-reference/contract-protocol/contract-protocol"}]},{"group":"Status","pages":[{"title":"Status","deprecated":null,"version":null,"openapi":"/openapi.json get /status","href":"/api-reference/status/status"}]},{"group":"Credits","pages":[{"title":"Credits","deprecated":null,"version":null,"openapi":"/openapi.json get /credits","href":"/api-reference/credits/credits"}]},{"group":"Beacon Validators","pages":[{"title":"Validator Details by Index","deprecated":null,"version":null,"openapi":"/openapi.json get /beacon/validators/details/index/{index}","href":"/api-reference/beacon-validators/validator-details-by-index"},{"title":"Validator Details by Pubkey","deprecated":null,"version":null,"openapi":"/openapi.json get /beacon/validators/details/pubkey/{pubkey}","href":"/api-reference/beacon-validators/validator-details-by-pubkey"},{"title":"Validator Rewards by Index","deprecated":null,"version":null,"openapi":"/openapi.json get /beacon/validators/rewards/index/{index}","href":"/api-reference/beacon-validators/validator-rewards-by-index"},{"title":"Validator Rewards by Pubkey","deprecated":null,"version":null,"openapi":"/openapi.json get /beacon/validators/rewards/pubkey/{pubkey}","href":"/api-reference/beacon-validators/validator-rewards-by-pubkey"},{"title":"Validator Withdrawals by Index","deprecated":null,"version":null,"openapi":"/openapi.json get /beacon/validators/withdrawals/index/{index}","href":"/api-reference/beacon-validators/validator-withdrawals-by-index"},{"title":"Validator Withdrawals by Pubkey","deprecated":null,"version":null,"openapi":"/openapi.json get /beacon/validators/withdrawals/pubkey/{pubkey}","href":"/api-reference/beacon-validators/validator-withdrawals-by-pubkey"},{"title":"Validator Deposits by Index","deprecated":null,"version":null,"openapi":"/openapi.json get /beacon/validators/deposits/index/{index}","href":"/api-reference/beacon-validators/validator-deposits-by-index"},{"title":"Validator Deposits by Pubkey","deprecated":null,"version":null,"openapi":"/openapi.json get /beacon/validators/deposits/pubkey/{pubkey}","href":"/api-reference/beacon-validators/validator-deposits-by-pubkey"}]},{"group":"Address Book","pages":[{"title":"List Address Book","description":"List every address saved to the account behind your API key. Entries are keyed by address — the response carries no id field.\n\n**Cost:** 1 credit per call. Automatically refunded on 4xx/5xx responses.\n\n**Access:** Requires portfolio entitlement — the same flag that unlocks `/v1/portfolio`.\n\n**Rate limit:** 360 req/min (shared with portfolio bucket)\n\n**Get your API key:** [Dev Portal](https://data.octav.fi)","deprecated":null,"version":null,"openapi":"/openapi.json get /addressbook","href":"/api-reference/address-book/list-address-book"},{"title":"Add Address Book Entries","deprecated":null,"version":null,"openapi":"/openapi.json post /addressbook","href":"/api-reference/address-book/add-address-book-entries"},{"title":"Remove Address Book Entry","description":"Remove one entry from the address book. Paid and wallet-authorized entries cannot be removed through the API and return 409 ADDRESSBOOK_ENTRY_NOT_DELETABLE.\n\n**Cost:** 1 credit per call. Automatically refunded on 4xx/5xx responses.\n\n**Access:** Requires portfolio entitlement — the same flag that unlocks `/v1/portfolio`.\n\n**Rate limit:** 360 req/min (shared with portfolio bucket)\n\n**Get your API key:** [Dev Portal](https://data.octav.fi)","deprecated":null,"version":null,"openapi":"/openapi.json delete /addressbook/{address}","href":"/api-reference/address-book/remove-address-book-entry"},{"title":"Rename Address Book Entry","deprecated":null,"version":null,"openapi":"/openapi.json patch /addressbook/{address}","href":"/api-reference/address-book/rename-address-book-entry"}]},{"group":"Bundles","pages":[{"title":"List Bundles","deprecated":null,"version":null,"openapi":"/openapi.json get /bundles","href":"/api-reference/bundles/list-bundles"},{"title":"Create Bundle","deprecated":null,"version":null,"openapi":"/openapi.json post /bundles","href":"/api-reference/bundles/create-bundle"},{"title":"Get Bundle","deprecated":null,"version":null,"openapi":"/openapi.json get /bundles/{bundleId}","href":"/api-reference/bundles/get-bundle"},{"title":"Delete Bundle","deprecated":null,"version":null,"openapi":"/openapi.json delete /bundles/{bundleId}","href":"/api-reference/bundles/delete-bundle"},{"title":"Rename Bundle","deprecated":null,"version":null,"openapi":"/openapi.json patch /bundles/{bundleId}","href":"/api-reference/bundles/rename-bundle"},{"title":"Add Address to Bundle","deprecated":null,"version":null,"openapi":"/openapi.json post /bundles/{bundleId}/addresses","href":"/api-reference/bundles/add-address-to-bundle"},{"title":"Remove Address from Bundle","deprecated":null,"version":null,"openapi":"/openapi.json delete /bundles/{bundleId}/addresses/{address}","href":"/api-reference/bundles/remove-address-from-bundle"}]},{"group":"Agent (x402)","pages":[{"title":"Agent Portfolio (x402)","deprecated":null,"version":null,"openapi":"/openapi.json get /agent/portfolio","href":"/api-reference/agent-x402/agent-portfolio-x402"},{"title":"Agent Wallet (x402)","deprecated":null,"version":null,"openapi":"/openapi.json get /agent/wallet","href":"/api-reference/agent-x402/agent-wallet-x402"},{"title":"Agent Nav (x402)","deprecated":null,"version":null,"openapi":"/openapi.json get /agent/nav","href":"/api-reference/agent-x402/agent-nav-x402"},{"title":"Agent Status (x402)","deprecated":null,"version":null,"openapi":"/openapi.json get /agent/status","href":"/api-reference/agent-x402/agent-status-x402"},{"title":"Agent Chains (x402)","deprecated":null,"version":null,"openapi":"/openapi.json get /agent/chains","href":"/api-reference/agent-x402/agent-chains-x402"}]}]},{"group":"AI Development","pages":[{"title":"Build Crypto Apps With AI","sidebarTitle":"AI Development Overview","href":"/api/ai-development/overview"},{"title":"Quick Start with AI","href":"/api/ai-development/quick-start"},{"title":"Crypto API for AI Agents \u0026 LLMs","sidebarTitle":"AI Agents \u0026 LLMs","href":"/api/ai-development/llms-integration"},{"title":"Crypto Portfolio MCP Server","sidebarTitle":"MCP Server","href":"/api/ai-development/mcp-server"},{"title":"Crypto Portfolio CLI","sidebarTitle":"CLI","href":"/api/ai-development/cli"},{"title":"Building AI Agents","href":"/api/ai-development/building-agents"},{"title":"The Complete Developer Guide","href":"/api/ai-development/complete-guide"}]},{"group":"Migrate to Octav","pages":[{"title":"Migrate to Octav","href":"/api/migrate/overview"},{"title":"Migrate from DeBank","href":"/api/migrate/from-debank"},{"title":"Migrate from Zerion","href":"/api/migrate/from-zerion"},{"title":"Migrate from Zapper","href":"/api/migrate/from-zapper"},{"title":"Migrate from Mobula","href":"/api/migrate/from-mobula"},{"title":"Migrate from Nansen","href":"/api/migrate/from-nansen"},{"title":"Migrate from Sim (Dune)","href":"/api/migrate/from-sim"},{"title":"Migrate from GoldRush (Covalent)","href":"/api/migrate/from-goldrush"},{"title":"Migrate from TopLedger","href":"/api/migrate/from-topledger"}]},{"group":"Reference","pages":[{"title":"Supported Chains","href":"/api/reference/supported-chains"},{"title":"DeFi Protocol Position Types","sidebarTitle":"Protocol Types","href":"/api/reference/protocol-types"},{"title":"Transaction Types","href":"/api/reference/transaction-types"}]}]},{"tab":"MCP Server","pages":[{"title":"MCP Server","href":"/mcp/overview"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/overview"}]}]},"basePath":"","title":"Add Address Book Entries - Octav Developer Docs","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}