Your organization may have services that are not publicly accessible but contain information that would be useful to manage in Cortex. You can use an HTTP action in a Workflow and Cortex’s Axon Relay to call internal services without exposing the service or authentication outside of your firewall.
After running the Workflow, check its Outputs for the “Call cities endpoint” data:
Last modified on September 28, 2026
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Cortex","colors":{"primary":"#653EE8","light":"#9378EF","dark":"#5132BA"},"logo":{"light":"https://mintcdn.com/cortex-290c0c42/JcmXgfdiEzZzqS2M/logo/cortex-light.svg?fit=max\u0026auto=format\u0026n=JcmXgfdiEzZzqS2M\u0026q=85\u0026s=3d32dd91336a0de9463a57e04f9b8bb3","dark":"https://mintcdn.com/cortex-290c0c42/JcmXgfdiEzZzqS2M/logo/cortex-dark.svg?fit=max\u0026auto=format\u0026n=JcmXgfdiEzZzqS2M\u0026q=85\u0026s=e664b364295c3625385d56e02110b4a7"},"favicon":{"light":"https://mintcdn.com/cortex-290c0c42/09VjkT_e7zMKfZOT/images/favicon.png?fit=max\u0026auto=format\u0026n=09VjkT_e7zMKfZOT\u0026q=85\u0026s=1689c84dea2d7ff7c17603f1d27163ae","dark":"https://mintcdn.com/cortex-290c0c42/09VjkT_e7zMKfZOT/images/favicon.png?fit=max\u0026auto=format\u0026n=09VjkT_e7zMKfZOT\u0026q=85\u0026s=1689c84dea2d7ff7c17603f1d27163ae"},"api":{"playground":{"display":"interactive"},"examples":{"prefill":true}},"appearance":{"default":"system"},"background":{"decoration":"gradient"},"navbar":{"links":[{"icon":"/images/us-flag.png","href":"https://app.getcortexapp.com/","label":"US"},{"icon":"/images/eu-flag.png","href":"https://app.eu.cortex.io/","label":"EU"}],"primary":{"type":"button","label":"Get a Demo","href":"https://www.cortex.io/demo"}},"footer":{"socials":{"github":"https://github.com/cortexapps","linkedin":"https://www.linkedin.com/company/cortexapp","youtube":"https://www.youtube.com/@cortex611","x":"https://twitter.com/GetCortexApp"},"links":[{"header":"Cortex","items":[{"label":"Cortex website","href":"https://cortex.io"},{"label":"Product log in (US)","href":"https://app.getcortexapp.com/login"},{"label":"Product log in (EU)","href":"https://app.eu.cortex.io/login"},{"label":"Privacy Policy","href":"https://www.cortex.io/legal/privacy-policy"},{"label":"Security Policy","href":"https://www.cortex.io/legal/security-policy"},{"label":"Terms of Service","href":"https://www.cortex.io/legal/terms-of-service"},{"label":"Status Page","href":"https://status.cortex.io/"}]},{"header":"Resources","items":[{"label":"Cortex Academy","href":"https://academy.cortex.io/"},{"label":"Blog","href":"https://www.cortex.io/blog"},{"label":"Engineering Blog","href":"https://builders.cortex.io/"},{"label":"Braintrust","href":"https://www.braintrust.cortex.io/"},{"label":"Contact Support","href":"https://support.cortex.io/"}]}]},"fonts":{"heading":{"family":"Inter"},"body":{"family":"Inter"}},"icons":{"library":"fontawesome"},"styling":{"eyebrows":"breadcrumbs","latex":false},"contextual":{"options":["copy","view","chatgpt","claude","download-pdf"],"display":"header"},"interaction":{"drilldown":true},"metadata":{"timestamp":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cortex-290c0c42","hasAudioNarration":false,"actualSubdomain":"cortex-290c0c42","customDomains":["docs.cortex.io"],"gitSource":{"type":"github","owner":"cortexapps","repo":"brainpower","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aecc415423e32f52d43b822","collectionId":"1e6be74f-65c1-4362-ba12-45727dfde5e7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aecc415423e32f52d43b822"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aecf55a9a2fa30d226d115b","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"API Reference","count":567},{"language":"default","tag":"REST API operations","count":566},{"language":"default","tag":"Integrations","count":424},{"language":"default","tag":"Product Docs","count":181},{"language":"default","tag":"Connect data","count":96},{"language":"default","tag":"Cookbooks","count":39},{"language":"default","tag":"Workflows","count":39},{"language":"default","tag":"Product areas","count":38},{"language":"default","tag":"Configure","count":27},{"language":"default","tag":"Scorecards","count":27}],"searchSettings":{"showContentSnippets":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"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":"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":"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":"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":"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},{"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}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":where(img[src^=\"/images/\"]){display:block;margin-left:auto;margin-right:auto;max-width:100%;height:auto}#navbar li.navbar-link>a{background-color:rgb(3 7 18 / 0.06)}#navbar li.navbar-link>a:hover{background-color:rgb(3 7 18 / 0.12)}html.dark #navbar li.navbar-link>a{background-color:rgb(255 255 255 / 0.07)}html.dark #navbar li.navbar-link>a:hover{background-color:rgb(255 255 255 / 0.14)}#content-area .mdx-content{--tw-prose-links: #7458DB;--tw-prose-invert-links: #C0AFFF}html.dark #content-area .mdx-content :where(a):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)){color:#C0AFFF}.product-tab{background-color:#F3F4F6!important;color:#000!important}.product-tab[data-active=\"true\"]{background-color:#E6E7E9!important}html.dark .product-tab{background-color:rgb(255 255 255 / 0.1)!important;color:#fff!important}html.dark .product-tab[data-active=\"true\"]{background-color:#653EE8!important}.product-item[data-active=\"true\"]{background-color:#E6E7E9}html.dark .product-item[data-active=\"true\"]{background-color:rgb(255 255 255 / 0.05)}.product-item-arrow{opacity:0}.product-item-arrow svg{width:14px!important;height:14px!important;max-width:14px;max-height:14px;flex-shrink:0}.product-item-arrow[data-active=\"true\"]{opacity:1}#kapa-search-ask-row{display:flex;align-items:center;gap:0.5rem;margin:0 0.375rem 0.375rem;padding:0.625rem 0.75rem;border-top:1px solid rgb(229 231 235);background:transparent;font-size:0.875rem;font-weight:500;color:rgb(3 7 18);text-align:left;cursor:pointer}#kapa-search-ask-row[hidden]{display:none}#kapa-search-ask-row:hover{background:rgb(0 0 0 / 0.03)}#kapa-search-ask-row svg{width:1rem;height:1rem;flex-shrink:0;color:rgb(var(--primary))}#kapa-search-ask-row .kapa-search-ask-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#kapa-search-ask-row kbd{padding:0 0.3rem;border:1px solid rgb(229 231 235);border-radius:0.25rem;font-family:inherit;font-size:0.75rem;color:rgb(107 114 128)}.dark #kapa-search-ask-row{border-top-color:rgb(255 255 255 / 0.1);color:#fff}.dark #kapa-search-ask-row:hover{background:rgb(255 255 255 / 0.05)}.dark #kapa-search-ask-row svg{color:rgb(var(--primary-light))}.dark #kapa-search-ask-row kbd{border-color:rgb(255 255 255 / 0.1);color:rgb(156 163 175)}#assistant-entry,#assistant-entry-mobile{display:none!important}#kapa-ask-button{display:none;flex:none;align-items:center;gap:0.375rem;height:2.25rem;margin-left:0.5rem;padding:0 0.875rem 0 0.75rem;border-radius:9999px;background:rgb(3 7 18 / 0.03);font-size:0.875rem;font-weight:500;color:rgb(55 65 81);cursor:pointer}@media (min-width: 1024px){#kapa-ask-button{display:flex}}#kapa-ask-button:hover{background:rgb(3 7 18 / 0.1)}#kapa-ask-button svg{width:1rem;height:1rem;color:rgb(var(--primary))}html.dark #kapa-ask-button{background:rgb(255 255 255 / 0.03);color:rgb(209 213 219)}html.dark #kapa-ask-button:hover{background:rgb(255 255 255 / 0.1)}html.dark #kapa-ask-button svg{color:rgb(var(--primary-light))}"},{"filePath":"status-tags.css","content":".nav-tag-pill[data-status]{background-color:var(--status-tag-color)!important;border-color:var(--status-tag-color)!important}.nav-tag-pill[data-status],.nav-tag-pill[data-status] .nav-tag-pill-text{color:#FFFFFF!important}.nav-tag-pill[data-status=\"research-preview\"]{--status-tag-color: #7B2D6B}.nav-tag-pill[data-status=\"public-beta\"]{--status-tag-color: #1D4ED8}.nav-tag-pill[data-status=\"private-beta\"]{--status-tag-color: #8C1D3A}"}],"page":{"pagePath":"guides/operational-readiness/internal-endpoints","slug":"/guides/operational-readiness/internal-endpoints","pageMetadata":{"title":"Call internal service endpoints in a Workflow","description":null,"href":"/guides/operational-readiness/internal-endpoints"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const RecipeBadges=({badges=[]})=>{const map={\"recipe\":{label:`Recipe`,color:`#A86400`},\"ai-excellence\":{label:`AI excellence`,color:`#653EE8`},\"production-readiness\":{label:`Production readiness`,color:`#226686`},\"incident-mgmt\":{label:`Incident management`,color:`#86198F`},\"migrations\":{label:`Migrations`,color:`#0E7C66`},\"compliance\":{label:`Compliance`,color:`#475569`},\"dora\":{label:`DORA metrics`,color:`#1D4ED8`},\"security\":{label:`Security`,color:`#B42318`},\"operational-readiness\":{label:`Operational readiness`,color:`#B54708`},\"dev-onboarding\":{label:`Developer onboarding`,color:`#C11574`}};const items=badges.map(key=>map[key]).filter(Boolean);if(items.length===0)return null;return _jsx(`div`,{className:`not-prose mint-flex mint-flex-wrap mint-gap-2 mint-mb-6`,children:items.map(b=>_jsx(`span`,{className:`mint-rounded-lg mint-px-2 mint-py-1 mint-text-xs mint-font-medium`,style:{backgroundColor:b.color,color:b.textColor||`#FFFFFF`},children:b.label},b.label))})};function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,_MdxComponentBoundary}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(_MdxComponentBoundary,{name:`RecipeBadges`,children:_jsx(RecipeBadges,{badges:[`recipe`,`operational-readiness`]})}),`\n`,_jsxs(_components.p,{children:[`Your organization may have services that are not publicly accessible but contain information that would be useful to manage in Cortex. You can use an `,_jsx(_components.a,{href:`/streamline/workflows/create`,children:`HTTP action in a Workflow`}),` and `,_jsx(_components.a,{href:`/ingesting-data-into-cortex/integrations/axon-relay`,children:`Cortex’s Axon Relay`}),` to call internal services without exposing the service or authentication outside of your firewall.`]}),`\n`,_jsxs(Heading,{level:`3`,id:`how-to-call-internal-service-endpoints-in-a-workflow`,children:[`How to call internal service endpoints in a Workflow `,_jsx(`a`,{href:`#how-to-call-internal-service-endpoints-in-a-workflow`,id:`how-to-call-internal-service-endpoints-in-a-workflow`})]}),`\n`,_jsxs(Heading,{level:`4`,id:`prerequisites`,children:[`Prerequisites `,_jsx(`a`,{href:`#prerequisites`,id:`prerequisites`})]}),`\n`,_jsxs(_components.p,{children:[`Before getting started, you should have already `,_jsx(_components.a,{href:`/ingesting-data-into-cortex/integrations/axon-relay`,children:`set up the Cortex Axon agent`}),` and `,_jsx(_components.a,{href:`/ingesting-data-into-cortex/integrations/axon-relay#step-1-2-create-a-env-file-and-a-docker-compose-yml-file`,children:`set your Cortex API token in the .env file`}),`.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Considerations`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`This guide describes using a Docker compose file, but note that Axon Relay can be run in Kuberenetes or other container systems.`}),`\n`,_jsx(_components.li,{children:`As an example throughout this guide, assume a service in the network has the following endpoint:`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`GET http://cities.internal.my-company.com/api/cities/s => [\"Seattle\", \"Sydney\", \"Shanghai\" ...]`})}),`\n`,_jsxs(Heading,{level:`4`,id:`step-1-create-request-forwarding-configuration`,children:[`Step 1: Create request forwarding configuration `,_jsx(`a`,{href:`#step-1-create-request-forwarding-configuration`,id:`step-1-create-request-forwarding-configuration`})]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Create a file that defines how requests are routed.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The example below permits any requests, but note that the `,_jsx(_components.code,{children:`method`}),` and `,_jsx(_components.code,{children:`path`}),` can be narrowed to allow access to specific endpoints:`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`11`,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:`11`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`{`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"private\": [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"method\": \"any\", `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"path\": \"/*\", `})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"origin\": \"http://cities.internal.my-company.com\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Heading,{level:`4`,id:`step-2-configure-axon-docker-container`,children:[`Step 2: Configure Axon Docker container `,_jsx(`a`,{href:`#step-2-configure-axon-docker-container`,id:`step-2-configure-axon-docker-container`})]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Create an accept file (in this example, `,_jsx(_components.code,{children:`docker-compose.yml`}),`) that defines how the container will route traffic and which routes are allowed.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`For production employments, two replicas should be specified. The example below can be used to test the system.`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`14`,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:`14`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`services:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` relay-cities:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` image: ghcr.io/cortexapps/cortex-axon-agent:latest`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` environment:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:\" HOSTNAME: relay-cities-${HOSTNAME:-local}\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` CORTEX_API_TOKEN: $CORTEX_API_TOKEN`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` volumes:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` - \"./accept.cities.json:/app/accept.json\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` command: [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"relay\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"-a\", \"axon-relay-cities\", # this can be any unique value`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` \"-f\", \"/app/accept.json\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsxs(_components.li,{children:[`Start the container, which will register it with Cortex: Run the command `,_jsx(_components.code,{children:`docker compose up`}),`.`]}),`\n`]}),`\n`,_jsxs(Heading,{level:`4`,id:`step-3-create-the-workflow-in-cortex`,children:[`Step 3: Create the Workflow in Cortex `,_jsx(`a`,{href:`#step-3-create-the-workflow-in-cortex`,id:`step-3-create-the-workflow-in-cortex`})]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Follow the `,_jsx(_components.a,{href:`/streamline/workflows/create#creating-a-workflow`,children:`steps to start creating a Workflow`}),` and `,_jsx(_components.a,{href:`/streamline/workflows/create#creating-a-workflow`,children:`configure its basic details`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Add an HTTP request block to your Workflow. Configure the block:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Block name`}),`: Enter a human readable name.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Slug`}),`: Enter a unique identifier for the block.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`HTTP method`}),`: GET`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`URL`}),`: Enter a URL in the following format: `,_jsx(_components.code,{children:`http://[your-configuration-alias]@relay-proxy.cortex.io[/desired/url/path]`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`For the example from this guide, it would be `,_jsx(_components.code,{children:`http://axon-relay-cities@relay-proxy.cortex.io/api/cities/s`})]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Headers`}),`: For more information on headers, see the `,_jsx(_components.a,{href:`/streamline/workflows/create`,children:`HTTP request block documentation`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`After saving your changes, run the Workflow.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Run`}),` at the top of the Workflow.`]}),`\n`,_jsxs(_components.li,{children:[`Learn more about Workflow runs in `,_jsx(_components.a,{href:`/streamline/workflows/run`,children:`Running a Workflow`}),`.`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`After running the Workflow, check its `,_jsx(_components.strong,{children:`Outputs`}),` for the “Call cities endpoint” data:`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/cortex-290c0c42/qRY2zZcIyXqFVeCq/guides/images/cities-endpoint.jpg?fit=max\u0026auto=format\u0026n=qRY2zZcIyXqFVeCq\u0026q=85\u0026s=efea92adc630a9eb7d95ddb98241049d`,alt:`The 'call cities endpoint' data appears in the Output of the Workflow.`,\"data-og-width\":`716`,width:`716`,\"data-og-height\":`442`,height:`442`,\"data-path\":`guides/images/cities-endpoint.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cortex-290c0c42/qRY2zZcIyXqFVeCq/guides/images/cities-endpoint.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=qRY2zZcIyXqFVeCq\u0026q=85\u0026s=0600cb770fe3caf2bdf5e6c5061da9f1 280w, https://mintcdn.com/cortex-290c0c42/qRY2zZcIyXqFVeCq/guides/images/cities-endpoint.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=qRY2zZcIyXqFVeCq\u0026q=85\u0026s=bdead7ea302ba98d998559036de8b80a 560w, https://mintcdn.com/cortex-290c0c42/qRY2zZcIyXqFVeCq/guides/images/cities-endpoint.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=qRY2zZcIyXqFVeCq\u0026q=85\u0026s=d9fadbe46b76368df80e4ab01ab580fb 840w, https://mintcdn.com/cortex-290c0c42/qRY2zZcIyXqFVeCq/guides/images/cities-endpoint.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=qRY2zZcIyXqFVeCq\u0026q=85\u0026s=c10ca710fbddfed6441377007267bb73 1100w, https://mintcdn.com/cortex-290c0c42/qRY2zZcIyXqFVeCq/guides/images/cities-endpoint.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=qRY2zZcIyXqFVeCq\u0026q=85\u0026s=c6f694e16ba8f2ff7f08334402da8c80 1650w, https://mintcdn.com/cortex-290c0c42/qRY2zZcIyXqFVeCq/guides/images/cities-endpoint.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=qRY2zZcIyXqFVeCq\u0026q=85\u0026s=02ed5a247dc4e2a602b0f4936c418a08 2500w`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{RecipeBadges,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":"Call internal service endpoints in a Workflow","description":null,"href":"/guides/operational-readiness/internal-endpoints"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[148,1123,")=>null;function _cr"]]},"mdxExtracts":{"tableOfContents":[{"title":"How to call internal service endpoints in a Workflow ","slug":"how-to-call-internal-service-endpoints-in-a-workflow","depth":3,"children":[]},{"title":"Prerequisites ","slug":"prerequisites","depth":4,"children":[]},{"title":"Step 1: Create request forwarding configuration ","slug":"step-1-create-request-forwarding-configuration","depth":4,"children":[]},{"title":"Step 2: Configure Axon Docker container ","slug":"step-2-configure-axon-docker-container","depth":4,"children":[]},{"title":"Step 3: Create the Workflow in Cortex ","slug":"step-3-create-the-workflow-in-cortex","depth":4,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/cortex-290c0c42/ed8d91d3153959c2/kapa.js","/_mintlify/custom/cortex-290c0c42/36b87f2caabcf780/status-tags.js"],"dynamicCss":".mint-mb-6 {\n margin-bottom: 1.5rem\n}\n.mint-flex {\n display: flex\n}\n.mint-flex-wrap {\n flex-wrap: wrap\n}\n.mint-gap-2 {\n gap: 0.5rem\n}\n.mint-rounded-lg {\n border-radius: 0.5rem\n}\n.mint-px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem\n}\n.mint-py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem\n}\n.mint-text-xs {\n font-size: 0.75rem;\n line-height: 1rem\n}\n.mint-font-medium {\n font-weight: 500\n}","subdomain":"cortex-290c0c42","siteName":"Cortex","title":"Call internal service endpoints in a Workflow - Cortex","relatedPagesConfig":{"enabled":true,"limit":3,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T21:03:26.080Z","gitLastModified":"2026-09-28T23:53:10.000Z","originalFileLocation":"guides/operational-readiness/internal-endpoints.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=\"application-name\" content=\"Cortex\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cortex-290c0c42/GsIUSGAJ7s7HMHgE/_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/cortex-290c0c42/GsIUSGAJ7s7HMHgE/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cortex-290c0c42/GsIUSGAJ7s7HMHgE/_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/cortex-290c0c42/GsIUSGAJ7s7HMHgE/_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/cortex-290c0c42/GsIUSGAJ7s7HMHgE/_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/cortex-290c0c42/GsIUSGAJ7s7HMHgE/_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/cortex-290c0c42/GsIUSGAJ7s7HMHgE/_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/cortex-290c0c42/GsIUSGAJ7s7HMHgE/_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/cortex-290c0c42/GsIUSGAJ7s7HMHgE/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Call internal service endpoints in a Workflow - Cortex\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Cortex\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cortex.io/guides/operational-readiness/internal-endpoints\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cortex-290c0c42.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Call+internal+service+endpoints+in+a+Workflow\u0026amp;theme=f362d88979a16e7429bae890\u0026amp;signature=7e2a575c91e754dd831f783bd48bfb3c710e65cac7b288dcd6bce9c9148a8e51\">\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=\"Call internal service endpoints in a Workflow - Cortex\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cortex-290c0c42.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Call+internal+service+endpoints+in+a+Workflow\u0026amp;theme=f362d88979a16e7429bae890\u0026amp;signature=7e2a575c91e754dd831f783bd48bfb3c710e65cac7b288dcd6bce9c9148a8e51\">\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/cortex-290c0c42/GsIUSGAJ7s7HMHgE/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Cortex\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#653EE8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cortex.io/guides/operational-readiness/internal-endpoints\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/operational-readiness/internal-endpoints.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cortex.io/#organization\",\"name\":\"Cortex\",\"url\":\"https://docs.cortex.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cortex-290c0c42/JcmXgfdiEzZzqS2M/logo/cortex-light.svg?fit=max\u0026auto=format\u0026n=JcmXgfdiEzZzqS2M\u0026q=85\u0026s=3d32dd91336a0de9463a57e04f9b8bb3\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cortex.io#website\",\"name\":\"Cortex\",\"url\":\"https://docs.cortex.io\",\"publisher\":{\"@id\":\"https://docs.cortex.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cortex.io/guides/operational-readiness/internal-endpoints#webpage\",\"url\":\"https://docs.cortex.io/guides/operational-readiness/internal-endpoints\",\"name\":\"Call internal service endpoints in a Workflow\",\"dateModified\":\"2026-09-28T23:53:10.000Z\",\"isPartOf\":{\"@id\":\"https://docs.cortex.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cortex.io/guides/operational-readiness/internal-endpoints#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cortex.io/guides/operational-readiness/internal-endpoints#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Product areas\",\"item\":\"https://docs.cortex.io/guides/ai-excellence/establish-consistent-ai-security-controls\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Workflows\",\"item\":\"https://docs.cortex.io/guides/product-areas/workflows\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Call internal service endpoints in a Workflow\",\"item\":\"https://docs.cortex.io/guides/operational-readiness/internal-endpoints\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cortex.io/guides/operational-readiness/internal-endpoints#article\",\"headline\":\"Call internal service endpoints in a Workflow\",\"name\":\"Call internal service endpoints in a Workflow\",\"url\":\"https://docs.cortex.io/guides/operational-readiness/internal-endpoints\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cortex.io/guides/operational-readiness/internal-endpoints#webpage\"},\"dateModified\":\"2026-09-28T23:53:10.000Z\",\"publisher\":{\"@id\":\"https://docs.cortex.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cortex.io#website\"}}]}\u003c/script>","siteName":"Cortex","nav":{"global":null,"tabs":[{"tab":"Product Docs","icon":"books","pages":[{"title":"Product Docs","href":""}]},{"tab":"Cookbooks","icon":"hat-chef","groups":[{"group":" ","pages":[{"title":"Cookbooks","icon":"hat-chef","href":"/guides"}]},{"group":"Product areas","pages":[{"group":"Scorecards","root":{"title":"Scorecards","href":"/guides/product-areas/scorecards"},"pages":[{"title":"Establish consistent AI security controls","href":"/guides/ai-excellence/establish-consistent-ai-security-controls"},{"title":"Set benchmarks for AI readiness","href":"/guides/ai-excellence/set-benchmarks-for-ai-readiness"},{"title":"Prepare for effective use of AI tools","href":"/guides/ai-excellence/prepare-for-effective-use-of-ai-tools"},{"title":"Seasonal readiness Scorecard","href":"/guides/production-readiness/seasonal-readiness-scorecard"},{"title":"Reduce MTTA","href":"/guides/incident-mgmt/reduce-mtta"},{"title":"Reduce MTTR","href":"/guides/incident-mgmt/reduce-mttr"},{"title":"Manage an Upcoming EOL for AWS","href":"/guides/migrations-and-modernization/manage-an-upcoming-eol-for-aws"},{"title":"Accelerate migration to K8s","href":"/guides/migrations-and-modernization/accelerate-migration-to-k8s"},{"title":"Ensure SOC 2 compliance","href":"/guides/compliance/soc2"},{"title":"Measure DORA progress","href":"/guides/dora/scorecard"},{"title":"Enforce security standards","href":"/guides/security/scorecard"},{"title":"Surface vulnerability data in failed Scorecard rules","href":"/guides/security/vulnerabilities-rules"},{"title":"Surface code coverage metrics from SonarQube in failed Scorecard rules","href":"/guides/security/code-coverage-rules"}]},{"group":"Workflows","root":{"title":"Workflows","href":"/guides/product-areas/workflows"},"pages":[{"title":"Scaffold an ML model project","href":"/guides/ai-excellence/scaffold-ml-model"},{"group":"Manage Terraform infrastructure","root":{"title":"Manage Terraform infrastructure","href":"/guides/production-readiness/terraform"},"pages":[{"title":"Provision EC2 instance with Terraform","href":"/guides/production-readiness/terraform/provision"},{"title":"Update EC2 instance","href":"/guides/production-readiness/terraform/update"},{"title":"Terraform destroy","href":"/guides/production-readiness/terraform/destroy"}]},{"title":"Standardize new service creation","href":"/guides/production-readiness/standardize-new-service-creation"},{"title":"Rollback a service during an incident","href":"/guides/incident-mgmt/workflow-rollback"},{"title":"Create ServiceNow incident","href":"/guides/incident-mgmt/servicenow"},{"title":"Automate new dev environment","href":"/guides/dev-onboarding/env-setup-workflow"},{"title":"Automate user access to GitHub, PagerDuty, and Jira","href":"/guides/dev-onboarding/automate-user-access-to-github-pagerduty-and-jira"},{"title":"Automate user access to Copilot","href":"/guides/dev-onboarding/automate-user-access-to-copilot"},{"title":"Kick off a Jenkins pipeline","description":null,"href":"/guides/operational-readiness/jenkins-workflow"},{"title":"Call internal service endpoints in a Workflow","href":"/guides/operational-readiness/internal-endpoints"},{"title":"Run a Humanitec pipeline","description":null,"href":"/guides/operational-readiness/humanitec-pipeline"},{"title":"Trigger internal Jenkins jobs","href":"/guides/operational-readiness/jenkins-axon"},{"title":"Automate a sync in ArgoCD","href":"/guides/operational-readiness/argocd-workflow"},{"title":"Loop in a JavaScript block and return specified output","href":"/guides/operational-readiness/javascript-looping"},{"title":"Link SOC 2 documents to entity","href":"/guides/compliance/link-soc2-docs"},{"title":"Bulk accept entity data verifications","href":"/guides/compliance/bulk-accept-entity-data-verifications"}]},{"group":"Eng Intelligence","root":{"title":"Eng Intelligence","href":"/guides/product-areas/eng-intelligence"},"pages":[{"title":"Measure AI impact","href":"/guides/ai-excellence/measure-ai-impact"},{"title":"Improve bottlenecks in your software development lifecycle","href":"/guides/production-readiness/improve-bottlenecks"},{"title":"Tracking cloud costs","href":"/guides/operational-readiness/tracking-cloud-costs"}]},{"group":"Data verification","root":{"title":"Data verification","href":"/guides/product-areas/data-verification"},"pages":[{"title":"Verify services after AI-based auto-mapping","href":"/guides/ai-excellence/verify-auto-mappings"},{"title":"Validate data after migration","href":"/guides/migrations-and-modernization/validate-data"},{"title":"Data verifications for audit readiness","href":"/guides/compliance/data-verification"}]},{"group":"Plugins","root":{"title":"Plugins","href":"/guides/product-areas/plugins"},"pages":[{"title":"Visualizing custom data in a plugin","href":"/guides/operational-readiness/visualizing-custom-data-in-a-plugin"}]}]}]},{"tab":"API Reference","icon":"brain","pages":[{"title":"API Reference","href":"/api"}]}]},"basePath":"","title":"Call internal service endpoints in a Workflow - Cortex","buildId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","deploymentId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CAita2ok.js","lightbox-handle-r17bVUz3.js"]}