Protect Fidel80 API credentials and build safer integrations.
Use these practices when integrating with Fidel80.
Keep API keys server-side
Fidel80 API keys are credentials and should be treated like passwords.
Never expose an API key in browser or frontend code.
Do not commit API keys to source control.
Store keys in environment variables or a secrets manager.
Limit access to keys to the systems that need them.
Protect the full API key
The complete API key is shown when it is created.Store it securely because Fidel80 stores a hashed representation rather than the original value.If you believe a key has been exposed, revoke it and create a new one.
Use separate keys where appropriate
Use separate API keys for separate applications, services, or environments where practical.This makes it easier to:
identify which integration is using a key,
revoke one integration without affecting another,
rotate credentials safely.
Use HTTPS
Send Fidel80 API requests and receive webhooks over HTTPS in deployed environments.Do not expose production credentials over unencrypted connections.
Validate workflow access
Before generating a verification token, confirm that:
the workflow belongs to the authenticated organization,
the workflow is active,
the workflow version belongs to the selected workflow.
Fidel80 also performs these checks when processing the request.
Protect applicant information
Verification requests may contain applicant information such as names, email addresses, phone numbers, and verification results.Only collect and store information required for the integration, and restrict access appropriately.
Handle verification links carefully
Verification links contain a token that grants access to a verification flow.
Send links only to the intended applicant.
Avoid exposing tokens in logs where possible.
Generate a fresh token when a previous token is expired, cancelled, completed, or no longer suitable.
Webhook security
Only configure webhook endpoints that you control.The endpoint should:
use HTTPS,
accept JSON POST requests,
validate incoming data before processing it,
return an appropriate success response after processing,
configure a signing secret where webhook authenticity must be verified,
verify the X-Fidel80-Signature before trusting a signed webhook.
The signature is an HMAC-SHA256 digest calculated over:
{timestamp}.{raw-request-body}
Use the webhook signing secret as the HMAC key and compare signatures using a constant-time comparison.
Verify the exact raw request body. Parsing and re-serializing the JSON before verification can change the signed bytes and cause signature validation to fail.
Rate limits
No public API rate-limit policy is documented here because a rate-limit implementation has not yet been verified in the current Fidel80 codebase.Do not assume a specific request limit unless one is provided for your Fidel80 environment.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Fidel80 Developer Docs","description":"Fidel80 is an API-first KYC, KYB, AML, risk and compliance platform built for banks, fintechs, mobile money providers, and digital businesses across Africa. Explore developer documentation, API references, authentication guides, integration tutorials, and code examples to integrate identity verification, business verification, sanctions and PEP screening, and ongoing risk monitoring into your applications.","colors":{"primary":"#0F6C73","light":"#0F6C73","dark":"#0F6C73"},"logo":{"light":"https://mintcdn.com/fidel80/2M7ffCRGZlIgzhjw/images/Fidel80log-square-white-transparentbackground(1).png?fit=max\u0026auto=format\u0026n=2M7ffCRGZlIgzhjw\u0026q=85\u0026s=a56a6ebd09043651f8a506ac5040a1a9","dark":"https://mintcdn.com/fidel80/2M7ffCRGZlIgzhjw/images/file_000000002c3861f5aeddc78c2ae3913d(1).png?fit=max\u0026auto=format\u0026n=2M7ffCRGZlIgzhjw\u0026q=85\u0026s=63ced04dc2af2d5958aba3d863a8c9aa"},"favicon":{"light":"https://mintcdn.com/fidel80/2M7ffCRGZlIgzhjw/images/file_00000000f444820ba4ca20d471b91c06.png?fit=max\u0026auto=format\u0026n=2M7ffCRGZlIgzhjw\u0026q=85\u0026s=f7817a8cecf4a122a5e09c5839f59f29","dark":"https://mintcdn.com/fidel80/2M7ffCRGZlIgzhjw/images/189942(1).png?fit=max\u0026auto=format\u0026n=2M7ffCRGZlIgzhjw\u0026q=85\u0026s=0172bd678856accf0ad5470a54fdc0dd"},"navbar":{"links":[{"href":"mailto:dev.support@fidel80.com","label":"Developer Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://client.fidel80.com"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/fidel80"}},"fonts":{"heading":{"family":"Inter","weight":600},"body":{"family":"Inter","weight":400}},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Documentation","icon":"book-open-cover","href":"https://mintlify.com/docs"},{"anchor":"Blog","icon":"newspaper","href":"https://mintlify.com/blog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fidel80","hasAudioNarration":false,"actualSubdomain":"fidel80","customDomains":["docs.fidel80.com"],"gitSource":{"type":"github","owner":"mintlify-community","repo":"docs-fidel80-5a2bc30c","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":"","_id":"6ad9c1365dafb9bec0ddb36c"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6af8c434541a7d21b873f7b5","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"Resources","count":4},{"language":"default","tag":"API Reference","count":2},{"language":"default","tag":"Integration Guides","count":2},{"language":"default","tag":"Getting Started","count":2},{"language":"default","tag":"Authentication","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":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":"custom-rbac-roles","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":"rbac-expansion","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":"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":"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":"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":"editor-metadata","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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"resources/security-best-practices","slug":"/resources/security-best-practices","pageMetadata":{"title":"Security \u0026 Best Practices","description":"Protect Fidel80 API credentials and build safer integrations.","sidebarTitle":"Security Best Practices","href":"/resources/security-best-practices"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Protect Fidel80 API credentials and build safer integrations.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Use these practices when integrating with Fidel80.`}),`\n`,_jsx(Heading,{level:`2`,id:`keep-api-keys-server-side`,children:`Keep API keys server-side`}),`\n`,_jsx(_components.p,{children:`Fidel80 API keys are credentials and should be treated like passwords.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Never expose an API key in browser or frontend code.`}),`\n`,_jsx(_components.li,{children:`Do not commit API keys to source control.`}),`\n`,_jsx(_components.li,{children:`Store keys in environment variables or a secrets manager.`}),`\n`,_jsx(_components.li,{children:`Limit access to keys to the systems that need them.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`protect-the-full-api-key`,children:`Protect the full API key`}),`\n`,_jsx(_components.p,{children:`The complete API key is shown when it is created.`}),`\n`,_jsx(_components.p,{children:`Store it securely because Fidel80 stores a hashed representation rather than the original value.`}),`\n`,_jsx(_components.p,{children:`If you believe a key has been exposed, revoke it and create a new one.`}),`\n`,_jsx(Heading,{level:`2`,id:`use-separate-keys-where-appropriate`,children:`Use separate keys where appropriate`}),`\n`,_jsx(_components.p,{children:`Use separate API keys for separate applications, services, or environments where practical.`}),`\n`,_jsx(_components.p,{children:`This makes it easier to:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`identify which integration is using a key,`}),`\n`,_jsx(_components.li,{children:`revoke one integration without affecting another,`}),`\n`,_jsx(_components.li,{children:`rotate credentials safely.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`use-https`,children:`Use HTTPS`}),`\n`,_jsx(_components.p,{children:`Send Fidel80 API requests and receive webhooks over HTTPS in deployed environments.`}),`\n`,_jsx(_components.p,{children:`Do not expose production credentials over unencrypted connections.`}),`\n`,_jsx(Heading,{level:`2`,id:`validate-workflow-access`,children:`Validate workflow access`}),`\n`,_jsx(_components.p,{children:`Before generating a verification token, confirm that:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`the workflow belongs to the authenticated organization,`}),`\n`,_jsx(_components.li,{children:`the workflow is active,`}),`\n`,_jsx(_components.li,{children:`the workflow version belongs to the selected workflow.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Fidel80 also performs these checks when processing the request.`}),`\n`,_jsx(Heading,{level:`2`,id:`protect-applicant-information`,children:`Protect applicant information`}),`\n`,_jsx(_components.p,{children:`Verification requests may contain applicant information such as names, email addresses, phone numbers, and verification results.`}),`\n`,_jsx(_components.p,{children:`Only collect and store information required for the integration, and restrict access appropriately.`}),`\n`,_jsx(Heading,{level:`2`,id:`handle-verification-links-carefully`,children:`Handle verification links carefully`}),`\n`,_jsx(_components.p,{children:`Verification links contain a token that grants access to a verification flow.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Send links only to the intended applicant.`}),`\n`,_jsx(_components.li,{children:`Avoid exposing tokens in logs where possible.`}),`\n`,_jsx(_components.li,{children:`Generate a fresh token when a previous token is expired, cancelled, completed, or no longer suitable.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`webhook-security`,children:`Webhook security`}),`\n`,_jsx(_components.p,{children:`Only configure webhook endpoints that you control.`}),`\n`,_jsx(_components.p,{children:`The endpoint should:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`use HTTPS,`}),`\n`,_jsxs(_components.li,{children:[`accept JSON `,_jsx(_components.code,{children:`POST`}),` requests,`]}),`\n`,_jsx(_components.li,{children:`validate incoming data before processing it,`}),`\n`,_jsx(_components.li,{children:`return an appropriate success response after processing,`}),`\n`,_jsx(_components.li,{children:`configure a signing secret where webhook authenticity must be verified,`}),`\n`,_jsxs(_components.li,{children:[`verify the `,_jsx(_components.code,{children:`X-Fidel80-Signature`}),` before trusting a signed webhook.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`For signed webhooks, Fidel80 sends:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`http`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`http`,children:_jsxs(_components.code,{language:`http`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`X-Fidel80-Timestamp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \u003cunix-timestamp>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`X-Fidel80-Signature`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sha256=\u003chex-digest>`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The signature is an HMAC-SHA256 digest calculated over:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`{timestamp}.{raw-request-body}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Use the webhook signing secret as the HMAC key and compare signatures using a constant-time comparison.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Verify the exact raw request body. Parsing and re-serializing the JSON before verification can change the signed bytes and cause signature validation to fail.`})}),`\n`,_jsx(Heading,{level:`2`,id:`rate-limits`,children:`Rate limits`}),`\n`,_jsx(_components.p,{children:`No public API rate-limit policy is documented here because a rate-limit implementation has not yet been verified in the current Fidel80 codebase.`}),`\n`,_jsx(_components.p,{children:`Do not assume a specific request limit unless one is provided for your Fidel80 environment.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Security \u0026 Best Practices","description":"Protect Fidel80 API credentials and build safer integrations.","sidebarTitle":"Security Best Practices","href":"/resources/security-best-practices"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Keep API keys server-side","slug":"keep-api-keys-server-side","depth":2,"children":[]},{"title":"Protect the full API key","slug":"protect-the-full-api-key","depth":2,"children":[]},{"title":"Use separate keys where appropriate","slug":"use-separate-keys-where-appropriate","depth":2,"children":[]},{"title":"Use HTTPS","slug":"use-https","depth":2,"children":[]},{"title":"Validate workflow access","slug":"validate-workflow-access","depth":2,"children":[]},{"title":"Protect applicant information","slug":"protect-applicant-information","depth":2,"children":[]},{"title":"Handle verification links carefully","slug":"handle-verification-links-carefully","depth":2,"children":[]},{"title":"Webhook security","slug":"webhook-security","depth":2,"children":[]},{"title":"Rate limits","slug":"rate-limits","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"fidel80","siteName":"Fidel80 Developer Docs","title":"Security \u0026 Best Practices - Fidel80 Developer Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-14T20:27:37.437Z","originalFileLocation":"resources/security-best-practices.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=\"Protect Fidel80 API credentials and build safer integrations.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fidel80 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/fidel80/_UNXfJkKw5A0M50d/_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/fidel80/_UNXfJkKw5A0M50d/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fidel80/_UNXfJkKw5A0M50d/_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/fidel80/_UNXfJkKw5A0M50d/_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/fidel80/_UNXfJkKw5A0M50d/_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/fidel80/_UNXfJkKw5A0M50d/_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/fidel80/_UNXfJkKw5A0M50d/_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/fidel80/_UNXfJkKw5A0M50d/_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/fidel80/_UNXfJkKw5A0M50d/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Security \u0026amp; Best Practices - Fidel80 Developer Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Protect Fidel80 API credentials and build safer integrations.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fidel80 Developer Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fidel80.com/resources/security-best-practices\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fidel80.mintlify.site/_mintlify/api/og/v2?division=Resources\u0026amp;title=Security+%26+Best+Practices\u0026amp;description=Protect+Fidel80+API+credentials+and+build+safer+integrations.\u0026amp;theme=c519aecc360fa618acdf2bcb\u0026amp;signature=b568fe25e06043498f788b101969c924c3a9cd5b2c6ccbecce8873031a6cab79\">\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=\"Security \u0026amp; Best Practices - Fidel80 Developer Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Protect Fidel80 API credentials and build safer integrations.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fidel80.mintlify.site/_mintlify/api/og/v2?division=Resources\u0026amp;title=Security+%26+Best+Practices\u0026amp;description=Protect+Fidel80+API+credentials+and+build+safer+integrations.\u0026amp;theme=c519aecc360fa618acdf2bcb\u0026amp;signature=b568fe25e06043498f788b101969c924c3a9cd5b2c6ccbecce8873031a6cab79\">\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/fidel80/_UNXfJkKw5A0M50d/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fidel80 Developer Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0F6C73\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fidel80.com/resources/security-best-practices\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/resources/security-best-practices.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fidel80.com/#organization\",\"name\":\"Fidel80 Developer Docs\",\"url\":\"https://docs.fidel80.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fidel80/2M7ffCRGZlIgzhjw/images/Fidel80log-square-white-transparentbackground(1).png?fit=max\u0026auto=format\u0026n=2M7ffCRGZlIgzhjw\u0026q=85\u0026s=a56a6ebd09043651f8a506ac5040a1a9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fidel80.com#website\",\"name\":\"Fidel80 Developer Docs\",\"url\":\"https://docs.fidel80.com\",\"publisher\":{\"@id\":\"https://docs.fidel80.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fidel80.com/resources/security-best-practices#webpage\",\"url\":\"https://docs.fidel80.com/resources/security-best-practices\",\"name\":\"Security \u0026 Best Practices\",\"description\":\"Protect Fidel80 API credentials and build safer integrations.\",\"dateModified\":\"2026-11-14T20:27:37.437Z\",\"isPartOf\":{\"@id\":\"https://docs.fidel80.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fidel80.com/resources/security-best-practices#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fidel80.com/resources/security-best-practices#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Resources\",\"item\":\"https://docs.fidel80.com/untitled-page\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Security \u0026 Best Practices\",\"item\":\"https://docs.fidel80.com/resources/security-best-practices\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.fidel80.com/resources/security-best-practices#article\",\"headline\":\"Security \u0026 Best Practices\",\"name\":\"Security \u0026 Best Practices\",\"description\":\"Protect Fidel80 API credentials and build safer integrations.\",\"url\":\"https://docs.fidel80.com/resources/security-best-practices\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fidel80.com/resources/security-best-practices#webpage\"},\"dateModified\":\"2026-11-14T20:27:37.437Z\",\"publisher\":{\"@id\":\"https://docs.fidel80.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fidel80.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Fidel80 Developer Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Fidel80 Developer Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/resources/security-best-practices.md","siteName":"Fidel80 Developer Docs","nav":{"global":{"anchors":[{"anchor":"Documentation","icon":"book-open-cover","href":"https://mintlify.com/docs"},{"anchor":"Blog","icon":"newspaper","href":"https://mintlify.com/blog"}]},"pages":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/index"},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Authentication","pages":[{"title":"API Keys","sidebarTitle":"API Keys","href":"/authentication/api-keys"}]},{"group":"API Reference","pages":[{"title":"GraphQL API","sidebarTitle":"GraphQL API","href":"/api-reference/graphql"},{"title":"Generate Verification Token","sidebarTitle":"\tGenerate Verification Token","href":"/api-reference/generate-verification-token"}]},{"group":"Integration Guides","pages":[{"title":"Smart Capture Link","sidebarTitle":"Smart Capture Link","href":"/guides/smart-capture-link"},{"title":"Webhooks","href":"/guides/webhooks"}]},{"group":"Resources","pages":[{"title":"Errors \u0026 Troubleshooting","sidebarTitle":"Errors \u0026 Troubleshooting","href":"/untitled-page"},{"title":"Environments","description":"Test and promote your Fidel80 integration safely.","sidebarTitle":"Environments","href":"/resources/environments"},{"title":"Security \u0026 Best Practices","sidebarTitle":"Security Best Practices","href":"/resources/security-best-practices"},{"title":"Documentation Maintenance","description":"How Fidel80 developer documentation is updated, reviewed, and kept in sync with the platform.","sidebarTitle":"Documentation Maintenance","href":"/resources/documentation-maintenance"}]}]},"basePath":"","title":"Security \u0026 Best Practices - Fidel80 Developer Docs","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":[],"chunks":[]}