Skip to content
Go To Dashboard

@sapiom/axios

Axios integration with automatic payment handling

Terminal window
npm install @sapiom/axios

Creates a Sapiom-enabled Axios client with automatic authorization and payment handling

Signature:

function withSapiom(axiosInstance: AxiosInstance, config?: SapiomAxiosConfig | undefined): AxiosInstance

Parameters:

NameTypeDescription
axiosInstanceAxiosInstance-
configSapiomAxiosConfig | undefined-

Returns: AxiosInstance - The same Axios instance (now Sapiom-enabled)

Example:

// Simplest usage (reads SAPIOM_API_KEY from environment)
import axios from 'axios';
import { withSapiom } from '@sapiom/axios';
const client = withSapiom(axios.create({
baseURL: 'https://api.example.com'
}));
const data = await client.get('/premium-endpoint');

Example:

// With API key and default metadata
import axios from 'axios';
import { withSapiom } from '@sapiom/axios';
const client = withSapiom(axios.create({
baseURL: 'https://api.example.com'
}), {
apiKey: 'sk_...',
agentName: 'my-agent',
serviceName: 'my-service'
});
// Per-request override via __sapiom
await client.post('/api/resource', data, {
__sapiom: {
serviceName: 'different-service',
actionName: 'custom-action'
}
});
// Disable Sapiom for specific request
await client.get('/api/public', {
__sapiom: { enabled: false }
});

Custom error classes

Constructor:

new AuthorizationDeniedError(transactionId: string, endpoint: string, reason: string | undefined)
ParameterTypeDescription
transactionIdstring-
endpointstring-
reasonstring | undefined-

Constructor:

new AuthorizationTimeoutError(transactionId: string, endpoint: string, timeout: number)
ParameterTypeDescription
transactionIdstring-
endpointstring-
timeoutnumber-

Configuration for Sapiom-enabled Axios client

Extends: BaseSapiomIntegrationConfig