When sending usage data to m3ter or accessing the API directly, you should always use Service Authentication. To control access to m3ter by Service Users, we implement the OAuth 2.0 Client Credentials Grant authentication flow. In accordance with this grant type, to use Service Authentication you must first obtain a Bearer Token to use for access when making API calls to the m3ter platform. You can use Basic Authentication to obtain a Bearer Token. For Basic Authentication, you will first need an api key and api secret.
OAuth 2.0 Client Credentials Grant? If you are not already familiar with this type of client credentials authorization flow, we strongly recommend you consult the OAuth 2.0 Clients Credentials documentation first.
This topic explains how to generate access keys and obtain Bearer Tokens for your Service Users.
Generating an API Key and Secret for a Service User
You can generate an Access Key id and Api Secret for a Service User from within the m3ter Console:
When you first create a Service User, you can choose to generate access keys - see Creating a Service User.
Alternatively, you can open the details page for a Service User and generate access keys. You will likely want to rotate access keys at regular intervals as good security practice by making existing keys inactive and generating new ones.
To generate access keys for Service Users:
On the Settings>Access>Service Users tab, select the NAME text of the Service User. The details page for the Service User opens. Any access keys generated for the Service User are listed in the Access Keys panel.
Select Generate Access Key. A Generate Access Key popup appears, which shows:
Organization ID
Access Key ID
API Secret
You can copy each of these string values directly to your clipboard.
Important! When you generate an access key for a Service User, you need to keep a record of the Api Secret before you close the popup, because this will only be shown once.
On the Generate Access Key popup, select Close. You are returned to the details page where the access key is listed as ACTIVE on the Access Keys panel.
You can now use the Access Key id and Api Secret to authenticate the Service User to m3ter using the Basic Authentication method and obtain a Bearer Token for making subsequent API calls.
If you want to generate additional access keys, you can repeat steps 2 to 3. If you generate additional keys, you should take care to mark the old ones as Inactive - those for which you cannot remember or find the Api Secret or those no longer required due to rotation.
Tip: Rotating Access Keys? Note that you can only create up to two Access Keys at a time - if you want to maintain continual rotation of your Service User Access Keys, after creating two you must first inactivate and remove one to create a new one.
When you have generated access keys for a Service User as explained in the previous section, you can use them with Basic Authentication to obtain a Bearer Token. This section gives some examples of how to obtain a Bearer Token using Basic Auth:
This example uses Postman to obtain a Service User Bearer Token using Basic Authentication.To obtain a Bearer Token using access keys in Postman:
In your Postman workspace, select to make a POST call and enter this URL as the endpoint:
https://api.m3ter.com/oauth/token
On the Authorization tab, for Type select Basic Auth and copy and paste your Service User Access Key id for Username and Api Secret for Password:
Select the Body tab and enter this JSON:
Click Send. Your Bearer Token is generated and loaded into the Body tab of the Response panel in Postman as the "access_token" value:
Warning: The Bearer Token is valid for 18000 seconds or 5 hours, after which time has elapsed, you will have to obtain a new one.
You can now use your Bearer Token when making API calls to m3ter.
Important! You must assign Administrator Permissions to a Service User to allow the user to make API calls to the Service. See Adding Permissions to Service Users.
This example uses the cmd line to obtain a Service User Bearer Token using Basic Authentication.To obtain a Bearer Token using access keys from the cmd line:
Encode the Access key id and Api Secret as base64 and use the value as in Step 2:
Encode the Access key id and Api Secret as base64 and use the value as {{basicAuth}} in Step 2:
base64(${Access key id}:{Api Secret})
Submit the following:
curl --location --request POST 'https://api.m3ter.com/oauth/token' \--header 'Authorization: Basic {{basicAuth}}' \--header 'Content-Type: application/json' \--data-raw '{Â Â "grant_type": "client_credentials"}'
The response is:
{  "token_type": "Bearer",  "access_token": "xx",  "expires_in": 18000}
You can now use the returned access_token value as a Bearer Token in API calls to m3ter.
Alternatively, you can skip the base64 encoding at Step 1, and simply use:
For an example of how to obtain a Bearer Token using a Python script, please see the Authentication and Authorization section in the introduction to our API Reference documentation.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"m3ter Documentation","description":"Guides, learning resources and API reference for integrating with m3ter","colors":{"primary":"#4caf4c","dark":"#449d44"},"logo":{"light":"https://mintcdn.com/m3ter/t6C65JBQiQOFtjBy/images/m3ter-logo-blue-sf.svg?fit=max\u0026auto=format\u0026n=t6C65JBQiQOFtjBy\u0026q=85\u0026s=3928db28c84ec6950e43caf96e635d80","dark":"https://mintcdn.com/m3ter/t6C65JBQiQOFtjBy/images/m3ter-logo-white-sf.svg?fit=max\u0026auto=format\u0026n=t6C65JBQiQOFtjBy\u0026q=85\u0026s=a018cb782e49a2fbdd811276476d0605"},"favicon":"https://mintcdn.com/m3ter/T0RRts393DSUkWFc/favicon.svg?fit=max\u0026auto=format\u0026n=T0RRts393DSUkWFc\u0026q=85\u0026s=9492b54cc98df6775983b287b6f865cd","navbar":{"links":[{"href":"https://m3ter.freshdesk.com","label":"Support"},{"href":"https://console.m3ter.com","label":"Console"}],"primary":{"type":"button","label":"Schedule a demo","href":"https://www.m3ter.com/contact"}},"footer":{"socials":{"linkedin":"https://uk.linkedin.com/company/m3ter","x":"https://x.com/m3terHQ","github":"https://github.com/m3ter-com"},"links":[{"items":[{"label":"Website","href":"https://www.m3ter.com"},{"label":"Legal","href":"https://www.m3ter.com/legal"},{"label":"Security","href":"https://www.m3ter.com/security"},{"label":"Trust Center","href":"https://trust.m3ter.com"}]}]},"fonts":{"family":"Montserrat"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","latex":false},"integrations":{"ga4":{"measurementId":"G-V9C7TTPRQT"}},"contextual":{"options":["copy","view"],"display":"header"},"thumbnails":{"fonts":{"family":"Montserrat"}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"m3ter","hasAudioNarration":false,"actualSubdomain":"m3ter","customDomains":["docs.m3ter.com"],"gitSource":{"type":"github","owner":"m3ter-com","repo":"m3ter-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae9a09c36175fbf7124961d","collectionId":"92768e54-2234-4c9f-bb43-903eed567982","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae9a09c36175fbf7124961d"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae9a09c36175fbf7124961d","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Guides","count":400},{"language":"default","tag":"API Reference","count":393},{"language":"default","tag":"Endpoints","count":387},{"language":"default","tag":"Integrations","count":66},{"language":"default","tag":"m3sh Function Reference","count":66},{"language":"default","tag":"Synthetic functions","count":50},{"language":"default","tag":"m3ter","count":50},{"language":"default","tag":"m3sh","count":43},{"language":"default","tag":"End-Customer Accounts","count":27},{"language":"default","tag":"m3ter Connector for Salesforce","count":24}]},"assistantConfig":{"enableAskAiButton":true,"enableStarterQuestions":false,"enableAskAiSearchBar":false},"basePath":"","hasChatPermissions":true,"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":"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},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"guides/authenticating-with-the-platform/service-authentication","slug":"/guides/authenticating-with-the-platform/service-authentication","pageMetadata":{"title":"Service Authentication","description":null,"href":"/guides/authenticating-with-the-platform/service-authentication"},"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={a:`a`,blockquote:`blockquote`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`When sending usage data to m3ter or accessing the API directly, you should always use `,_jsx(_components.em,{children:`Service Authentication`}),`. To control access to m3ter by Service Users, we implement the OAuth 2.0 Client Credentials Grant authentication flow. In accordance with this grant type, to use Service Authentication you must first obtain a Bearer Token to use for access when making API calls to the m3ter platform. You can use Basic Authentication to obtain a Bearer Token. For Basic Authentication, you will first need an api key and api secret.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`OAuth 2.0 Client Credentials Grant?`}),` If you are not already familiar with this type of client credentials authorization flow, we `,_jsx(_components.em,{children:`strongly recommend`}),` you consult the `,_jsx(_components.a,{href:`https://datatracker.ietf.org/doc/html/rfc6749#section-4.4`,children:`OAuth 2.0 Clients Credentials documentation`}),` first.`]})}),`\n`,_jsx(_components.p,{children:`This topic explains how to generate access keys and obtain Bearer Tokens for your Service Users.`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tip: Creating and Managing Service Users?`}),` For more details, see `,_jsx(_components.a,{href:`/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users`,children:`Creating and Configuring Service Users`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`generating-an-api-key-and-secret-for-a-service-user`,children:`Generating an API Key and Secret for a Service User`}),`\n`,_jsxs(_components.p,{children:[`You can generate an `,_jsx(_components.strong,{children:`Access Key id`}),` and `,_jsx(_components.strong,{children:`Api Secret`}),` for a Service User from within the m3ter Console:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`When you first create a Service User, you can choose to generate access keys - see `,_jsx(_components.a,{href:`/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users#creating-service-users`,children:`Creating a Service User`}),`.`]}),`\n`,_jsx(_components.li,{children:`Alternatively, you can open the details page for a Service User and generate access keys. You will likely want to rotate access keys at regular intervals as good security practice by making existing keys inactive and generating new ones.`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`To generate access keys for Service Users:`})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`On the `,_jsx(_components.strong,{children:`Settings>Access>Service Users`}),` tab, select the `,_jsx(_components.strong,{children:`NAME`}),` text of the `,_jsx(_components.strong,{children:`Service User`}),`. The details page for the Service User opens. Any access keys generated for the Service User are listed in the `,_jsx(_components.strong,{children:`Access Keys`}),` panel.`]}),`\n`,_jsxs(_components.li,{children:[`Select `,_jsx(_components.strong,{children:`Generate Access Key`}),`. A `,_jsx(_components.strong,{children:`Generate Access Key`}),` popup appears, which shows:`]}),`\n`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Organization ID`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Access Key ID`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`API Secret`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`You can copy each of these string values directly to your clipboard.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Important!`}),` When you generate an access key for a Service User, you need to keep a record of the `,_jsx(_components.strong,{children:`Api Secret`}),` before you close the popup, because this will only be shown once.`]})}),`\n`,_jsxs(_components.ol,{start:`3`,children:[`\n`,_jsxs(_components.li,{children:[`On the `,_jsx(_components.strong,{children:`Generate Access Key`}),` popup, select `,_jsx(_components.strong,{children:`Close`}),`. You are returned to the details page where the access key is listed as `,_jsx(_components.strong,{children:`ACTIVE`}),` on the `,_jsx(_components.strong,{children:`Access Keys`}),` panel.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`You can now use the `,_jsx(_components.strong,{children:`Access Key id`}),` and `,_jsx(_components.strong,{children:`Api Secret`}),` to authenticate the Service User to m3ter using the Basic Authentication method and obtain a Bearer Token for making subsequent API calls.`]}),`\n`,_jsxs(_components.ol,{start:`4`,children:[`\n`,_jsxs(_components.li,{children:[`If you want to generate additional access keys, you can repeat steps 2 to 3. If you generate additional keys, you should take care to mark the old ones as `,_jsx(_components.strong,{children:`Inactive`}),` - those for which you cannot remember or find the `,_jsx(_components.strong,{children:`Api Secret`}),` or those no longer required due to rotation.`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tip: Rotating Access Keys?`}),` Note that you can only create up to two Access Keys at a time - if you want to maintain continual rotation of your Service User Access Keys, after creating two you must first inactivate and remove one to create a new one.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`obtaining-a-bearer-token-using-basic-auth`,children:`Obtaining a Bearer Token Using Basic Auth`}),`\n`,_jsxs(_components.p,{children:[`When you have generated access keys for a Service User as explained in the `,_jsx(_components.a,{href:`/guides/authenticating-with-the-platform/service-authentication#generating-an-api-key-and-secret-for-a-service-user`,children:`previous section`}),`, you can use them with Basic Authentication to obtain a Bearer Token. This section gives some examples of how to obtain a Bearer Token using Basic Auth:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/guides/authenticating-with-the-platform/service-authentication#example-using-postman`,children:`Example Using Postman`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/guides/authenticating-with-the-platform/service-authentication#example-using-cmd-line`,children:`Example Using cmd Line`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/guides/authenticating-with-the-platform/service-authentication#example-using-python-script`,children:`Example Using Python Script`})}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tip: API Reference Docs?`}),` When obtaining a Bearer Token for a Service User, please see the `,_jsx(_components.a,{href:`/api/auth/get-token`,children:`Auth section`}),` of our API Reference Docs.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`example-using-postman`,children:`Example Using Postman`}),`\n`,_jsx(_components.p,{children:`This example uses Postman to obtain a Service User Bearer Token using Basic Authentication.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`To obtain a Bearer Token using access keys in Postman:`})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`In your Postman workspace, select to make a `,_jsx(_components.strong,{children:`POST`}),` call and enter this URL as the endpoint:`]}),`\n`]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`https://api.m3ter.com/oauth/token`})}),`\n`]}),`\n`,_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsxs(_components.li,{children:[`On the `,_jsx(_components.strong,{children:`Authorization`}),` tab, for `,_jsx(_components.strong,{children:`Type`}),` select `,_jsx(_components.strong,{children:`Basic Auth`}),` and copy and paste your Service User `,_jsx(_components.strong,{children:`Access Key id`}),` for `,_jsx(_components.strong,{children:`Username`}),` and `,_jsx(_components.strong,{children:`Api Secret`}),` for `,_jsx(_components.strong,{children:`Password`}),`:`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167377-postmanpost2.png?fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=1cbc18b9f1692e8cd227bdbc1520a2d7`,alt:`Authorization m3ter example`,style:{maxWidth:`min(800px, 100%)`},\"data-og-width\":`1301`,width:`1301`,\"data-og-height\":`391`,height:`391`,\"data-path\":`images/1649167377-postmanpost2.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167377-postmanpost2.png?w=280\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=237858f59df3b7476d28acca72e3c478 280w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167377-postmanpost2.png?w=560\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=bb2da16df09018204caefeab5e5e46ee 560w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167377-postmanpost2.png?w=840\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=d6f4d21a13fead3f9eb8e407d4ec3d8c 840w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167377-postmanpost2.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=72d5bf8a384757fde5beb5fdd5df98aa 1100w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167377-postmanpost2.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=45d45c50154f2e5b7fd059ca14bd5086 1650w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167377-postmanpost2.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=7eae6f92b950b1cbe28bbdff96a35ac0 2500w`}),`\n`,_jsxs(_components.ol,{start:`3`,children:[`\n`,_jsxs(_components.li,{children:[`Select the `,_jsx(_components.strong,{children:`Body`}),` tab and enter this JSON:`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167542-postmanpost3.png?fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=fbe2352fe5e611bb76cae08ad2380230`,alt:`post in m3ter authorisation code`,style:{maxWidth:`min(800px, 100%)`},\"data-og-width\":`1293`,width:`1293`,\"data-og-height\":`381`,height:`381`,\"data-path\":`images/1649167542-postmanpost3.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167542-postmanpost3.png?w=280\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=9ba191fca7d003de52ce1b9274b4208e 280w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167542-postmanpost3.png?w=560\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=10c21b6facb3a853ba8388427747998d 560w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167542-postmanpost3.png?w=840\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=4c4d0fd3e7cc93cd681479fb9378a358 840w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167542-postmanpost3.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=6a22e1a141f078df20a7992638d2debf 1100w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167542-postmanpost3.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=53668d162c0b6627375b31149e3c09c5 1650w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167542-postmanpost3.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=7ed3c7e8a8b101227630d3a92059e4f9 2500w`}),`\n`,_jsxs(_components.ol,{start:`4`,children:[`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Send`}),`. Your Bearer Token is generated and loaded into the `,_jsx(_components.strong,{children:`Body`}),` tab of the `,_jsx(_components.strong,{children:`Response`}),` panel in Postman as the `,_jsx(_components.code,{children:`\"access_token\"`}),` value:`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167807-postmanpost4.png?fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=632da259e0c1338e8e27d79c946d38a9`,alt:`Bearer Token m3ter`,style:{maxWidth:`min(800px, 100%)`},\"data-og-width\":`1137`,width:`1137`,\"data-og-height\":`418`,height:`418`,\"data-path\":`images/1649167807-postmanpost4.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167807-postmanpost4.png?w=280\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=808f0e0dedd503d74efcefc9c7583a22 280w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167807-postmanpost4.png?w=560\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=e4406ec03d75ab4858e5be99bed2a45f 560w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167807-postmanpost4.png?w=840\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=bff8f07255828086abaab99c56b6fcf1 840w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167807-postmanpost4.png?w=1100\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=1c79943fe3794916810c479d57847968 1100w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167807-postmanpost4.png?w=1650\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=4c9ca2114c1690d47e75567214d9ee17 1650w, https://mintcdn.com/m3ter/Vo1TZsYmBMDUxOdH/images/1649167807-postmanpost4.png?w=2500\u0026fit=max\u0026auto=format\u0026n=Vo1TZsYmBMDUxOdH\u0026q=85\u0026s=4c16bcbecbcd1815ec6e2c2102c1ad8b 2500w`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Warning:`}),` The Bearer Token is valid for 18000 seconds or 5 hours, after which time has elapsed, you will have to obtain a new one.`]})}),`\n`,_jsx(_components.p,{children:`You can now use your Bearer Token when making API calls to m3ter.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Important!`}),` You must assign `,_jsx(_components.strong,{children:`Administrator`}),` Permissions to a Service User to allow the user to make API calls to the Service. See `,_jsx(_components.a,{href:`/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users#adding-permission-policies-to-service-users`,children:`Adding Permissions to Service Users`}),`.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`example-using-cmd-line`,children:`Example Using cmd Line`}),`\n`,_jsx(_components.p,{children:`This example uses the cmd line to obtain a Service User Bearer Token using Basic Authentication.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`To obtain a Bearer Token using access keys from the cmd line:`})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Encode the `,_jsx(_components.strong,{children:`Access\\xA0 key id`}),` and `,_jsx(_components.strong,{children:`Api Secret`}),` as base64 and use the value as `,` in Step 2:`]}),`\n`,_jsxs(_components.li,{children:[`Encode the `,_jsx(_components.strong,{children:`Access\\xA0 key id`}),` and `,_jsx(_components.strong,{children:`Api Secret`}),` as base64 and use the value as `,_jsx(_components.code,{children:`{{basicAuth}}`}),` in Step 2:`]}),`\n`]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:\"base64(${Access key id}:{Api Secret})\"})}),`\n`]}),`\n`,_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsx(_components.li,{children:`Submit the following:`}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --location`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://api.m3ter.com/oauth/token'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--header `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Authorization: Basic {{basicAuth}}'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--header `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--data-raw `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\\xA0 \\xA0 \"grant_type\": \"client_credentials\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`}'`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`The response is:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\\xA0 \\xA0 \"token_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bearer\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\\xA0 \\xA0 \"access_token\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"xx\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\\xA0 \\xA0 \"expires_in\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`18000`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`You can now use the returned `,_jsx(_components.code,{children:`access_token`}),` value as a Bearer Token in API calls to m3ter.`]}),`\n`,_jsxs(_components.ol,{start:`3`,children:[`\n`,_jsx(_components.li,{children:`Alternatively, you can skip the base64 encoding at Step 1, and simply use:`}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --location`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://api.m3ter.com/oauth/token'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`-u `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`{Access`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` key`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` id}:{Api`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Secret}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--header `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--data-raw `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\\xA0\"grant_type\": \"client_credentials\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`}'`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`In other words, use the `,_jsx(_components.code,{children:`-u`}),` option and specify the `,_jsx(_components.strong,{children:`Access key id`}),` and `,_jsx(_components.strong,{children:`Api Secre`}),`t separated by colon.`]}),`\n`,_jsx(Heading,{level:`3`,id:`example-using-python-script`,children:`Example using Python Script`}),`\n`,_jsxs(_components.p,{children:[`For an example of how to obtain a Bearer Token using a Python script, please see the `,_jsx(_components.a,{href:`/api/authentication`,children:`Authentication and Authorization`}),` section in the introduction to our API Reference documentation.`]})]})}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":"Service Authentication","description":null,"href":"/guides/authenticating-with-the-platform/service-authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Generating an API Key and Secret for a Service User","slug":"generating-an-api-key-and-secret-for-a-service-user","depth":2,"children":[]},{"title":"Obtaining a Bearer Token Using Basic Auth","slug":"obtaining-a-bearer-token-using-basic-auth","depth":2,"children":[{"title":"Example Using Postman","slug":"example-using-postman","depth":3,"children":[]},{"title":"Example Using cmd Line","slug":"example-using-cmd-line","depth":3,"children":[]},{"title":"Example using Python Script","slug":"example-using-python-script","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"m3ter","siteName":"m3ter Documentation","title":"Service Authentication - m3ter Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T15:11:26.156Z","originalFileLocation":"guides/authenticating-with-the-platform/service-authentication.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=\"m3ter Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_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/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/m3ter/zwvZvZyvpa8TKV7c/_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/m3ter/zwvZvZyvpa8TKV7c/_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/m3ter/zwvZvZyvpa8TKV7c/_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/m3ter/zwvZvZyvpa8TKV7c/_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/m3ter/zwvZvZyvpa8TKV7c/_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/m3ter/zwvZvZyvpa8TKV7c/_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/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Service Authentication - m3ter Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"m3ter Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://m3ter.mintlify.app/_mintlify/api/og/v2?division=Authentication\u0026amp;title=Service+Authentication\u0026amp;theme=a12cf6d8598fbb808e7ba8a7\u0026amp;signature=191a9b11b1a993d281ead09752a6b449b9fc17a10a1a95bd3201a08faef266eb\">\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=\"Service Authentication - m3ter Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://m3ter.mintlify.app/_mintlify/api/og/v2?division=Authentication\u0026amp;title=Service+Authentication\u0026amp;theme=a12cf6d8598fbb808e7ba8a7\u0026amp;signature=191a9b11b1a993d281ead09752a6b449b9fc17a10a1a95bd3201a08faef266eb\">\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/m3ter/zwvZvZyvpa8TKV7c/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"m3ter Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4caf4c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/authenticating-with-the-platform/service-authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.m3ter.com/#organization\",\"name\":\"m3ter Documentation\",\"url\":\"https://docs.m3ter.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/m3ter/t6C65JBQiQOFtjBy/images/m3ter-logo-blue-sf.svg?fit=max\u0026auto=format\u0026n=t6C65JBQiQOFtjBy\u0026q=85\u0026s=3928db28c84ec6950e43caf96e635d80\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.m3ter.com#website\",\"name\":\"m3ter Documentation\",\"url\":\"https://docs.m3ter.com\",\"publisher\":{\"@id\":\"https://docs.m3ter.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication#webpage\",\"url\":\"https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication\",\"name\":\"Service Authentication\",\"dateModified\":\"2026-10-30T15:11:26.156Z\",\"isPartOf\":{\"@id\":\"https://docs.m3ter.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.m3ter.com/guides/getting-started/quick-start-worked-example\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authentication\",\"item\":\"https://docs.m3ter.com/guides/authenticating-with-the-platform\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Service Authentication\",\"item\":\"https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication#article\",\"headline\":\"Service Authentication\",\"name\":\"Service Authentication\",\"url\":\"https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication\",\"mainEntityOfPage\":{\"@id\":\"https://docs.m3ter.com/guides/authenticating-with-the-platform/service-authentication#webpage\"},\"dateModified\":\"2026-10-30T15:11:26.156Z\",\"publisher\":{\"@id\":\"https://docs.m3ter.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.m3ter.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"m3ter Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"m3ter Documentation","nav":{"global":null,"tabs":[{"tab":"Exploring m3ter","pages":[{"title":"Exploring m3ter","href":""}]},{"tab":"Guides","pages":[{"group":"Guides","pages":[{"group":"Getting Started","root":{"title":"Getting Started","href":"/guides/getting-started"},"expanded":false,"pages":[{"title":"Quick Start","href":"/guides/getting-started/quick-start-worked-example"},{"title":"m3ter Console","href":"/guides/getting-started/working-in-the-m3ter-console"},{"title":"Configuration Workflow","href":"/guides/getting-started/previewing-main-configuration-steps"},{"group":"Worked Examples","expanded":false,"pages":[{"title":"Worked Examples","href":"/guides/getting-started/metering-for-production-worked-examples"},{"title":"Example 1: Cloud Storage and File Cleanup","href":"/guides/getting-started/metering-for-production-worked-examples/worked-example-1-cloud-storage-and-file-cleanup"},{"title":"Example 2: Compound Aggregation for Sign-Up Bonus","href":"/guides/getting-started/metering-for-production-worked-examples/example-2-compound-aggregation-for-sign-up-bonus"},{"title":"Example 3: Segmented Aggregation on Single Meter Usage","href":"/guides/getting-started/metering-for-production-worked-examples/example-3-segmented-aggregation-on-single-meter-usage"}]},{"title":"Dates in m3ter - Quick Reference Starter","href":"/guides/getting-started/working-with-dates-in-m3ter-easy-reference"},{"title":"Feature Release Stages","href":"/guides/getting-started/feature-release-stages"},{"title":"Knowledge Index","href":"/guides/getting-started/knowledge-index"},{"title":"Contacting m3ter Support","href":"/guides/getting-started/contacting-m3ter-support"}]},{"group":"Authentication","root":{"title":"Authentication","href":"/guides/authenticating-with-the-platform"},"expanded":false,"pages":[{"title":"User/Password Authentication","href":"/guides/authenticating-with-the-platform/user-password-authentication"},{"title":"m3ter Single Sign-On","description":null,"href":"/guides/authenticating-with-the-platform/m3ter-single-sign-on"},{"title":"Service Authentication","href":"/guides/authenticating-with-the-platform/service-authentication"}]},{"group":"Creating, Managing, and Reviewing Products","root":{"title":"Creating, Managing, and Reviewing Products","description":null,"href":"/guides/creating-and-managing-products"},"expanded":false,"pages":[{"title":"Working with Custom Fields","href":"/guides/creating-and-managing-products/working-with-custom-fields"}]},{"group":"Usage Data: Meters","root":{"title":"Usage Data: Meters","href":"/guides/usage-data-meters"},"expanded":false,"pages":[{"title":"Reviewing Meter Options","mode":"default","href":"/guides/usage-data-meters/reviewing-meter-options"},{"title":"Creating Product Meters","href":"/guides/usage-data-meters/creating-meters"},{"title":"Creating Global Meters","href":"/guides/usage-data-meters/creating-global-meters"},{"title":"Working in Meter Details","href":"/guides/usage-data-meters/working-in-meter-details"},{"title":"Working with Meter Derived Fields and Examples","href":"/guides/usage-data-meters/derived-fields-for-meters-examples-and-supported-syntax"}]},{"group":"Pricing Metrics: Aggregations","root":{"title":"Pricing Metrics: Aggregations","href":"/guides/usage-data-aggregations"},"expanded":false,"pages":[{"title":"Reviewing Aggregation Options","href":"/guides/usage-data-aggregations/reviewing-aggregation-options"},{"title":"Creating Product Aggregations","href":"/guides/usage-data-aggregations/creating-aggregations"},{"title":"Creating Global Aggregations","href":"/guides/usage-data-aggregations/creating-global-aggregations"},{"title":"Compound Aggregations","href":"/guides/usage-data-aggregations/compound-aggregations"},{"title":"Working with Compound Aggregation Calculations","href":"/guides/usage-data-aggregations/compound-aggregation-calculations"},{"title":"Compound Aggregations - Examples","href":"/guides/usage-data-aggregations/compound-aggregations-examples"},{"title":"Segmented Aggregations","href":"/guides/usage-data-aggregations/segmented-aggregations"},{"title":"Custom SQL Aggregations","href":"/guides/usage-data-aggregations/custom-sql-aggregations"},{"title":"Reviewing Aggregation Details","href":"/guides/usage-data-aggregations/reviewing-aggregation-details"}]},{"group":"Recurring Charges: Counters","root":{"title":"Recurring Charges: Counters","href":"/guides/recurring-charges-counters"},"expanded":false,"pages":[{"title":"Creating Counters and Pricing Plans","href":"/guides/recurring-charges-counters/creating-counters"},{"title":"Understanding and Creating Counter Adjustments for Accounts","href":"/guides/recurring-charges-counters/creating-counter-adjustments-for-accounts"},{"title":"Recurring Charges Billing: Seat-Based Pricing","href":"/guides/recurring-charges-counters/reviewing-bills-for-recurring-charges"},{"title":"Recurring Charges Billing: Hybrid Pricing","href":"/guides/recurring-charges-counters/recurring-charges-example-2-hybrid-pricing"}]},{"group":"Plans and Pricing","root":{"title":"Plans and Pricing","href":"/guides/plans-and-pricing"},"expanded":false,"pages":[{"group":"Creating and Working with Plan Templates, Plans, and Plan Groups","root":{"title":"Creating and Working with Plan Templates, Plans, and Plan Groups","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans"},"expanded":false,"pages":[{"title":"Reviewing Options for Plans and Plan Templates","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates"},{"title":"Understanding Billing Options for Plan Templates/Plans","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/understanding-billing-options-for-plan-templates-plans"},{"title":"Creating Plan Templates","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/creating-plan-templates"},{"title":"Creating Plans","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/creating-plans"},{"title":"Working in Plan Template and Plan Details","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-in-plan-details"},{"title":"Editing and Deleting Plan Templates and Plans","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/editing-plan-templates-and-plans"},{"title":"Working with Plan Groups","href":"/guides/plans-and-pricing/working-with-plan-templates-and-plans/working-with-plan-groups"}]},{"group":"Pricing and Managing Plans and Plan Templates","root":{"title":"Pricing and Managing Plans and Plan Templates","href":"/guides/plans-and-pricing/pricing-plans"},"expanded":false,"pages":[{"title":"Reviewing Pricing Options for Plans and Plan Templates","href":"/guides/plans-and-pricing/pricing-plans/reviewing-pricing-options-and-pricing-plans"},{"title":"Pricing Plans and Plan Templates","href":"/guides/plans-and-pricing/pricing-plans/pricing-plans"},{"title":"Pricing Plans Using Segmented Aggregations","href":"/guides/plans-and-pricing/pricing-plans/pricing-plans-using-segmented-aggregations"},{"title":"Managing and Editing Priced Plans and Plan Templates","href":"/guides/plans-and-pricing/pricing-plans/managing-and-editing-priced-plans-or-plan-templates"},{"title":"Duplicating Priced Plans and Plan Templates","href":"/guides/plans-and-pricing/pricing-plans/duplicating-priced-plans-or-plan-templates"}]}]},{"group":"End-Customer Accounts","root":{"title":"End-Customer Accounts","href":"/guides/end-customer-accounts"},"expanded":false,"pages":[{"title":"Managing Accounts - Best Practices","href":"/guides/end-customer-accounts/managing-accounts-best-practices"},{"title":"Creating and Managing Accounts","href":"/guides/end-customer-accounts/creating-an-account"},{"title":"Attaching Plans to an Account","href":"/guides/end-customer-accounts/attaching-plans-to-an-account"},{"title":"Creating Custom Plans for Accounts","href":"/guides/end-customer-accounts/creating-custom-account-plans"},{"title":"Attaching Plan Groups to an Account","href":"/guides/end-customer-accounts/attaching-plan-groups-to-an-account"},{"title":"Creating Custom Plan Groups for Accounts","href":"/guides/end-customer-accounts/creating-custom-plan-groups-for-accounts"},{"title":"Creating Prepayments for Accounts","href":"/guides/end-customer-accounts/creating-prepayments-for-accounts"},{"group":"Working with Contracts for Accounts","root":{"title":"Working with Contracts for Accounts","href":"/guides/end-customer-accounts/creating-contracts-for-accounts"},"expanded":false,"pages":[{"title":"Creating and Managing Contracts","href":"/guides/end-customer-accounts/creating-contracts-for-accounts/creating-and-managing-contracts"},{"title":"Setting Up Contract Billing","href":"/guides/end-customer-accounts/creating-contracts-for-accounts/setting-up-contract-billing"},{"title":"Reviewing Organization Contracts","href":"/guides/end-customer-accounts/creating-contracts-for-accounts/reviewing-organization-contracts"}]},{"group":"Working with Balances for Accounts","root":{"title":"Working with Balances for Accounts","href":"/guides/end-customer-accounts/creating-balances-for-accounts"},"expanded":false,"pages":[{"title":"Understanding and Managing Billing for Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/understanding-billing-for-balances"},{"title":"Creating and Managing Account Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-account-balances"},{"title":"Creating and Managing Transactions for Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/creating-and-managing-transactions-for-balances"},{"title":"Setting Up Transaction Schedules for Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/setting-transaction-schedules-for-balances"},{"title":"Creating Charges for Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances"},{"title":"Setting Up Charge Schedules for Balances","href":"/guides/end-customer-accounts/creating-balances-for-accounts/setting-charge-schedules-for-balances"},{"title":"Running and Viewing Bills for Balance Charges","href":"/guides/end-customer-accounts/creating-balances-for-accounts/runnning-viewing-bill-for-balance-charges"},{"title":"Reviewing Account Balances Summary","href":"/guides/end-customer-accounts/creating-balances-for-accounts/reviewing-account-balances-summary"},{"title":"Grants","href":"/guides/end-customer-accounts/creating-balances-for-accounts/balance-grants"}]},{"title":"Creating Charges for Accounts","href":"/guides/end-customer-accounts/creating-charges-for-accounts"},{"title":"Creating Counter Adjustments for Accounts","href":"/guides/end-customer-accounts/creating-counter-adjustments-for-accounts"},{"title":"Submitting Usage Data for an Account","href":"/guides/end-customer-accounts/submitting-usage-data-for-an-account"},{"title":"Working in Account Overview","href":"/guides/end-customer-accounts/working-in-account-overview"},{"title":"Reviewing and Recalculating Bills for an Account","href":"/guides/end-customer-accounts/reviewing-bills-for-an-account"},{"group":"Working with Parent/Child Accounts","root":{"title":"Working with Parent/Child Accounts","href":"/guides/end-customer-accounts/creating-and-working-with-child-accounts"},"expanded":false,"pages":[{"title":"Billing Hierarchy Modes for Parent/Child Accounts","href":"/guides/end-customer-accounts/creating-and-working-with-child-accounts/billing-for-parent-child-accounts"}]},{"title":"End Dating Account Billing Entities","href":"/guides/end-customer-accounts/end-dating-account-billing-entities"},{"title":"Creating and Managing External Mappings for Accounts","href":"/guides/end-customer-accounts/creating-and-managing-external-mappings-for-accounts"}]},{"group":"Billing and Usage Data","root":{"title":"Billing and Usage Data","href":"/guides/billing-and-usage-data"},"expanded":false,"pages":[{"group":"Submitting Usage Data","root":{"title":"Submitting Usage Data","href":"/guides/billing-and-usage-data/submitting-usage-data"},"expanded":false,"pages":[{"title":"API Calls for Data Ingest","href":"/guides/billing-and-usage-data/submitting-usage-data/api-calls-for-data-ingest"},{"title":"File Upload Service API","href":"/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api"},{"title":"Submitting and Checking Test Usage Data","href":"/guides/billing-and-usage-data/submitting-usage-data/submitting-test-usage-data"},{"title":"File Uploads for Usage Data by Meter","href":"/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter"},{"title":"Submitting Usage Data Adjustments Using Timestamp","href":"/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp"},{"title":"Submitting Usage Data for Non-Existent Accounts","href":"/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-for-non-existent-accounts"},{"title":"Reviewing and Resolving Ingest Events","href":"/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events"}]},{"group":"Running, Viewing, and Managing Bills","root":{"title":"Running, Viewing, and Managing Bills","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills"},"expanded":false,"pages":[{"title":"Running Bills and Viewing Bill Details","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details"},{"title":"Working with Bills in Bill Management","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/managing-bills"},{"title":"Approving and Locking Bills - Managing Bill Lifecycle","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/approving-and-locking-bills-managing-bill-lifecycle"},{"title":"Adding Credit Line Items to Bills","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-credit-line-items-to-bills"},{"title":"Adding Debit Line Items to Bills","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/adding-debit-line-items-to-bills"},{"title":"Viewing Bill History","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/viewing-bill-history"},{"title":"Scheduling Billing","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/scheduling-billing"},{"title":"Working with Bill Statements","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements"},{"title":"Bill Line Item Types","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-item-types"},{"title":"Bill Line Items - Default Descriptions","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-default-descriptions"},{"title":"Bill Line Items - Mapping to Accounting Products","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/bill-line-items-mapping-accounting-products"},{"title":"Troubleshooting Bills","href":"/guides/billing-and-usage-data/running-viewing-and-managing-bills/troubleshooting-bills"}]}]},{"group":"m3sh","root":{"title":"m3sh","href":"/guides/m3sh-automation"},"expanded":false,"pages":[{"group":"m3sh Workflows","root":{"title":"m3sh Workflows","href":"/guides/m3sh-workflows/m3sh-workflows"},"pages":[{"title":"m3sh Workflows - Key Concepts and Options","href":"/guides/m3sh-workflows/m3sh-workflows-key-concepts-and-options"},{"title":"Exploring m3sh Workflows","href":"/guides/m3sh-automation/exploring-m3sh-workflows"},{"title":"Reviewing m3sh Workflow Runs","href":"/guides/m3sh-automation/reviewing-m3sh-workflow-runs"},{"title":"Getting to Know the Workflow Builder","href":"/guides/m3sh-workflows/getting-to-know-the-workflow-builder"},{"title":"Creating Event Notification Workflows","href":"/guides/m3sh-workflows/creating-event-notification-workflows"},{"title":"Creating Incoming Webhook Workflows","href":"/guides/m3sh-workflows/creating-incoming-webhook-workflows"},{"title":"Working with Global Parameters","href":"/guides/m3sh-workflows/working-with-global-parameters"},{"title":"Utilizing Workflow Managed Templates","href":"/guides/m3sh-workflows/utilizing-workflow-managed-templates"},{"title":"Testing and Troubleshooting Workflows","href":"/guides/m3sh-workflows/testing-and-troubleshooting-workflows"},{"title":"Exporting and Importing Workflows","href":"/guides/m3sh-workflows/exporting-and-importing-workflows"}]},{"group":"Utilizing Events and Notifications","root":{"title":"Utilizing Events and Notifications","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications"},"expanded":false,"pages":[{"title":"Key Concepts and Relationships","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications/key-concepts-and-relationships"},{"title":"Object Definitions and API Calls","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications/object-definitions-and-api-calls"},{"title":"Creating, Managing, and Reviewing Notifications","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications/creating-managing-and-reviewing-notifications"},{"title":"Example - Notification Setup for Commitment Updated Event","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications/example-1-commitment-updated-event"},{"title":"Working with Scheduled Events","href":"/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events"}]},{"group":"Creating and Managing Credentials","root":{"title":"Creating and Managing Credentials","href":"/guides/integrations/setting-up-integrations/managing-integration-credentials"},"expanded":false,"pages":[{"title":"Creating Stripe Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-stripe-integration-credentials"},{"title":"Creating NetSuite Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-netsuite-integration-credentials"},{"title":"Creating Paddle Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-paddle-integration-credentials"},{"title":"Creating Chargebee Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-chargebee-integration-credentials"},{"title":"Creating QuickBooks Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-quickbooks-integration-credentials"},{"title":"Creating Xero Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-xero-integration-credentials"},{"title":"Creating Salesforce Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-salesforce-integration-credentials"},{"title":"Creating AWS Marketplace Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-aws-marketplace-integration-credentials"},{"title":"Creating Azure Marketplace Integration Credentials","href":"/guides/integrations/setting-up-integrations/_managing-integration-credentials-legacy/creating-azure-marketplace-integration-credentials"}]},{"group":"Integrations","root":{"title":"Integrations","href":"/guides/integrations"},"expanded":false,"pages":[{"title":"m3ter Integrations - Overview","sidebarTitle":"m3ter Integrations","href":"/guides/integrations/m3ter-integrations"},{"group":"Setting Up and Managing Integrations","root":{"title":"Setting Up and Managing Integrations","href":"/guides/integrations/setting-up-integrations"},"expanded":false,"pages":[{"title":"Creating and Managing Integrations","href":"/guides/integrations/setting-up-integrations/creating-and-managing-integration-configurations"},{"title":"Configuring Stripe Integrations","href":"/guides/integrations/setting-up-integrations/configuring-stripe-integrations"},{"title":"Configuring NetSuite Integrations","href":"/guides/integrations/setting-up-integrations/configuring-netsuite-integrations"},{"title":"Configuring Paddle Integrations","href":"/guides/integrations/setting-up-integrations/configuring-paddle-integrations"},{"title":"Configuring Chargebee Integrations","href":"/guides/integrations/setting-up-integrations/configuring-chargebee-integrations"},{"title":"Configuring QuickBooks Integrations","href":"/guides/integrations/setting-up-integrations/configuring-quickbooks-integrations"},{"title":"Configuring Xero Integrations","href":"/guides/integrations/setting-up-integrations/configuring-xero-integrations"},{"title":"Configuring Salesforce Entity Data Sync Integrations","href":"/guides/integrations/setting-up-integrations/configuring-sf-entity-data-integrations"},{"title":"Configuring AWS Marketplace Integrations","href":"/guides/integrations/setting-up-integrations/configuring-aws-integrations"},{"title":"AWS Marketplace Integrations - Reconciliation Features","href":"/guides/integrations/setting-up-integrations/aws-marketplace-integrations-reconciliation-features"},{"title":"Configuring Azure Marketplace Integrations","href":"/guides/integrations/setting-up-integrations/configuring-azure-marketplace-integrations"},{"title":"Azure Marketplace Integrations - Reconciliation Features","href":"/guides/integrations/setting-up-integrations/azure-marketplace-integrations-reconciliation-features"},{"title":"Managing Multiple Third Party Destinations for Integrations","href":"/guides/integrations/setting-up-integrations/managing-multiple-destinations-for-integrations"},{"title":"Reviewing Integration Run Details","href":"/guides/integrations/setting-up-integrations/reviewing-integration-run-details"}]}]},{"title":"Creating and Managing Outgoing Webhooks","href":"/guides/integrations/setting-up-integrations/creating-and-managing-destinations"},{"title":"Reviewing and Resolving Integration Events","href":"/guides/integrations/setting-up-integrations/reviewing-and-resolving-integration-events"},{"title":"Creating and Managing External Mappings","href":"/guides/integrations/setting-up-integrations/creating-and-managing-external-mappings"},{"title":"Creating and Managing Transformations","href":"/guides/m3sh-workflows/creating-and-managing-transformations"}]},{"group":"m3ter APIs","root":{"title":"m3ter APIs","href":"/guides/m3ter-apis"},"expanded":false,"pages":[{"title":"Config API Limits","href":"/guides/m3ter-apis/config-api-limits"},{"title":"Ingest API Limits and Optimizing Measurement Submissions","href":"/guides/m3ter-apis/ingest-api-limits"},{"title":"WAF Rules for HTTP Requests","href":"/guides/m3ter-apis/waf-rules-for-http-requests"},{"title":"Getting Started with API Calls","href":"/guides/m3ter-apis/getting-started-with-api-calls"},{"title":"HTTP Error Codes","href":"/guides/m3ter-apis/http-error-codes"}]},{"title":"m3ter Calculation Engine","href":"/guides/m3ter-calculation-engine"},{"group":"Lookup Tables","root":{"title":"Lookup Tables (Beta)","href":"/guides/lookup-tables"},"tag":"Beta","expanded":false,"pages":[{"title":"Creating and Managing Lookup Tables","href":"/guides/lookup-tables/creating-and-managing-lookup-tables"},{"title":"Adding Data to, Publishing, and Managing Lookup Table Revisions","href":"/guides/lookup-tables/adding-data-to-and-publishing-table-revisions"},{"title":"Worked Example - Variable Usage Discounting","href":"/guides/lookup-tables/worked-example-variable-usage-discounting"},{"title":"Worked Example - Variable Usage Discounting by Account","href":"/guides/lookup-tables/worked-example-variable-usage-discouting-by-account"},{"title":"Lookup Functions","href":"/guides/lookup-tables/lookup-functions"}]},{"title":"System Alerts","href":"/guides/alerts-events-and-notifications/viewing-and-managing-alerts"},{"group":"Organization and Access Management","root":{"title":"Organization and Access Management","href":"/guides/organization-and-access-management"},"expanded":false,"pages":[{"group":"Managing your Organization","root":{"title":"Managing your Organization","href":"/guides/organization-and-access-management/viewing-and-editing-organization"},"expanded":false,"pages":[{"title":"Viewing and Editing Organization Configuration","href":"/guides/organization-and-access-management/viewing-and-editing-organization/viewing-and-editing-organization-configuration"},{"title":"Timezone Settings - Notes and Recommendations","href":"/guides/organization-and-access-management/viewing-and-editing-organization/timezone-settings-notes-and-recommendations"},{"title":"Creating and Managing Currencies","href":"/guides/organization-and-access-management/viewing-and-editing-organization/creating-and-managing-currencies"},{"title":"Creating Credit Reasons","href":"/guides/organization-and-access-management/viewing-and-editing-organization/creating-credit-reasons"},{"title":"Creating Debit Reasons","href":"/guides/organization-and-access-management/viewing-and-editing-organization/creating-debit-reasons"},{"title":"Creating Transaction Types","href":"/guides/organization-and-access-management/viewing-and-editing-organization/creating-transaction-types"},{"title":"Adding and Editing Custom Fields","href":"/guides/organization-and-access-management/viewing-and-editing-organization/adding-and-editing-custom-fields"}]},{"title":"Understanding, Creating, and Managing Permission Policies","href":"/guides/organization-and-access-management/creating-and-managing-permissions"},{"group":"Managing Access and Users","root":{"title":"Managing Access and Users","href":"/guides/organization-and-access-management/managing-users"},"expanded":false,"pages":[{"title":"Managing Users and Assigning Permission Policies","href":"/guides/organization-and-access-management/managing-users/managing-users-and-assigning-permission-policies"},{"title":"Creating and Configuring Service Users","href":"/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users"},{"title":"Creating and Managing User Groups","href":"/guides/organization-and-access-management/managing-users/creating-and-managing-user-groups"},{"title":"Inviting Users to Organization","href":"/guides/organization-and-access-management/managing-users/inviting-users-to-organization"},{"title":"Tracking User Activity in Organization","href":"/guides/organization-and-access-management/managing-users/tracking-user-activity-in-organization"},{"title":"Granting m3ter Support Access to Organization","href":"/guides/organization-and-access-management/managing-users/granting-m3ter-support-access-to-organization"},{"title":"Viewing and Managing Permission Policies","href":"/guides/organization-and-access-management/managing-users/viewing-and-managing-permission-policies"}]}]},{"group":"m3ter Connector for Salesforce","root":{"title":"m3ter Connector for Salesforce","href":"/guides/m3ter-connector-for-salesforce"},"expanded":false,"pages":[{"title":"Overview - Functional Scope and Limitations","href":"/guides/m3ter-connector-for-salesforce/overview-functional-scope-and-limitations"},{"title":"Configuring the m3ter Connector for Salesforce","href":"/guides/m3ter-connector-for-salesforce/configuring-m3ter-salesforce-connector"},{"title":"Reviewing and Managing Metadata Mappings","href":"/guides/m3ter-connector-for-salesforce/reviewing-and-managing-metadata-mappings"},{"title":"Creating Custom Metadata Mappings","href":"/guides/m3ter-connector-for-salesforce/creating-metadata-mappings"},{"title":"Testing Sync Setup from Salesforce to m3ter","href":"/guides/m3ter-connector-for-salesforce/testing-sync-setup-from-salesforce-to-m3ter"},{"title":"Setting Up and Using Sync to m3ter Invocable Action","href":"/guides/m3ter-connector-for-salesforce/setting-up-invocable-action-for-event-driven-sync"},{"title":"Setting Up Sync for End Dating m3ter Account Billing Entities","href":"/guides/m3ter-connector-for-salesforce/setting-up-sync-for-end-dating-m3ter-account-billing-entities"},{"title":"Enabling Two-Way Automated Sync for m3ter Objects","href":"/guides/m3ter-connector-for-salesforce/enabling-two-way-automated-sync-for-m3ter-objects"},{"title":"Mapping Custom Fields on m3ter Entities","href":"/guides/m3ter-connector-for-salesforce/mapping-custom-fields-on-m3ter-entities"},{"title":"Mapping Segment Attributes for Pricing","href":"/guides/m3ter-connector-for-salesforce/mapping-segment-attributes-for-pricing"},{"title":"Setting Up m3sh Webhook Triggers","href":"/guides/m3ter-connector-for-salesforce/setting-up-m3sh-webhook-triggers"},{"title":"CRUD for Metering Entities","href":"/guides/m3ter-connector-for-salesforce/crud-for-metering-entities"},{"title":"Usage Design Targets","href":"/guides/m3ter-connector-for-salesforce/usage-design-targets"},{"title":"Generic m3ter API Invocable Action","href":"/guides/m3ter-connector-for-salesforce/generic-m3ter-api-invocable-action"},{"title":"Product Mapping Resolution","href":"/guides/m3ter-connector-for-salesforce/product-mapping-resolution"},{"title":"Checking Sync Logs and Troubleshooting","href":"/guides/m3ter-connector-for-salesforce/checking-sync-logs-and-troubleshooting"},{"group":"m3ter Connector - Sample Mappings","root":{"title":"m3ter Connector - Sample Mappings","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings"},"expanded":false,"pages":[{"title":"Sample Mappings 1 - Account","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mapping-1-account"},{"title":"Sample Mappings 2 - Commitment","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-2-commitment"},{"title":"Sample Mappings 3 - Contract","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-3-contract"},{"title":"Sample Mappings 4 - AccountPlan","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-4-accountplan"},{"title":"Sample Mappings 5 - Plan","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-5-plan"},{"title":"Sample Mappings 6 - Pricing","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-6-pricing"},{"title":"Sample Mappings 7 - Pricing Bands","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-sample-mappings/sample-mappings-7-pricing-bands"}]},{"title":"m3ter Connector for Salesforce - Changelog","href":"/guides/m3ter-connector-for-salesforce/m3ter-connector-for-salesforce-changelog"}]},{"group":"Data Explorers","root":{"title":"Data Explorers","href":"/guides/data-explorer"},"expanded":false,"pages":[{"title":"Usage Data Explorer","href":"/guides/data-explorer/performing-usage-queries-and-reviewing-results"},{"title":"Usage Data Explorer (v2)","href":"/guides/data-explorer/usage-data-explorer-v2"},{"title":"Billing Data Explorer","href":"/guides/data-explorer/performing-billing-queries-and-reviewing-results"},{"title":"Prepayments Data Explorer","href":"/guides/data-explorer/performing-commitments-queries-and-reviewing-results"},{"title":"Data Explorers: Saving, Updating, and Re-Using Queries","href":"/guides/data-explorer/saving-queries"},{"title":"Data Explorers: Exporting Query Results","href":"/guides/data-explorer/exporting-usage-query-results"}]},{"group":"Data Exports","root":{"title":"Data Exports (Preview)","href":"/guides/data-exports"},"tag":"Preview","expanded":false,"pages":[{"title":"Creating and Managing Export Destinations","href":"/guides/data-exports/creating-data-export-destinations"},{"group":"Creating Usage Data Export Schedules","root":{"title":"Creating Usage Data Export Schedules","href":"/guides/data-exports/creating-export-schedules"},"expanded":false,"pages":[{"title":"Creating Legacy Usage Data Export Schedules","href":"/guides/data-exports/creating-export-schedules/creating-legacy-usage-export-schedules"}]},{"title":"Creating Operational Data Export Schedules","href":"/guides/data-exports/creating-operational-data-export-schedules"},{"title":"Reviewing and Managing Export Schedules","href":"/guides/data-exports/reviewing-and-managing-export-schedules"},{"group":"Running Ad-Hoc Usage Data Exports","root":{"title":"Running Ad-Hoc Usage Data Exports","href":"/guides/data-exports/running-ad-hoc-data-exports"},"expanded":false,"pages":[{"title":"Running Ad-Hoc Legacy Usage Data Exports","href":"/guides/data-exports/running-ad-hoc-data-exports/running-ad-hoc-legacy-data-exports"}]},{"title":"Running Ad-Hoc Operational Data Exports","href":"/guides/data-exports/running-ad-hoc-operational-data-exports"},{"title":"Downloading Data Export Files Locally","href":"/guides/data-exports/downloading-data-export-files-locally"},{"title":"Reviewing Export Jobs","href":"/guides/data-exports/reviewing-export-jobs"},{"title":"Data Export - Entity Schema and Relationship Diagram","href":"/guides/data-exports/data-export-object-relationship-diagram"}]}]}]},{"tab":"Glossary","pages":[{"title":"Glossary","href":"/glossary-of-terms"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api/introduction"}]},{"tab":"m3sh Function Reference","pages":[{"title":"m3sh Function Reference","href":"/m3sh-function-reference/m3ter/introduction"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Service Authentication - m3ter Documentation","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-B4-wUcHm.js","lightbox-handle-r17bVUz3.js"]}