@mintapi/gateway is the buyer-side SDK for calling MintAPI endpoints that use 402 Payment Required plus X-PAYMENT retries.
Public import surface:
@mintapi/gateway/client
Use this SDK when you want an agent, tool runtime, or backend workflow to:
- make a normal HTTP request to MintAPI
- handle a
402challenge automatically - choose an accepted payment route
- sign the payment payload with your own signer infrastructure
- retry the request with
X-PAYMENT
This package does not contain the MintAPI seller-side gateway server. It only contains the buyer/client helpers external users need.
Supported exports from @mintapi/gateway/client:
paidFetchpaidJsoncreateAgentClientcreateSignerResolvergetSignerFamilydefineSignerModuleloadSignerModuleresolveSignerModuleMintApiClientErrorPaymentChallengeErrorNoSupportedNetworkErrorSignerUnavailableErrorPaymentHeaderCreationErrorMintApiRequestError
Everything else should be treated as internal implementation detail.
npm install @mintapi/gateway- install
@mintapi/gateway - define one signer module that can resolve EVM and Solana signers
- make one successful
paidJson(...)request - move to
createAgentClient(...)for endpoint-specific helpers
import { paidJson, createSignerResolver } from "@mintapi/gateway/client";
const signerResolver = createSignerResolver({
signerResolversByFamily: {
evm: async ({ network }) => resolveManagedEvmSigner(network),
svm: async ({ network }) => resolveManagedSolanaSigner(network),
},
});
const user = await paidJson(
"https://api.mintapi.dev/api/twitter/user-info?screenname=elonmusk&rest_id=44196397",
{ method: "GET" },
{
preferredNetworks: ["base", "polygon", "solana"],
getSigner: signerResolver,
},
);import { createAgentClient, createSignerResolver } from "@mintapi/gateway/client";
const signerResolver = createSignerResolver({
signerResolversByFamily: {
evm: async ({ network }) => resolveManagedEvmSigner(network),
svm: async ({ network }) => resolveManagedSolanaSigner(network),
},
});
const client = createAgentClient({
baseUrl: "https://api.mintapi.dev",
getSigner: signerResolver,
});
const user = await client.twitter.userInfo({
screenname: "elonmusk",
rest_id: "44196397",
});
const results = await client.youtube.search({
query: "cat",
type: "video",
geo: "US",
});Use defineSignerModule(...) when you want one reusable file for CLI usage, backend jobs, and long-running agents.
import { defineSignerModule } from "@mintapi/gateway/client";
export default defineSignerModule({
preferredNetworks: ["base", "polygon", "solana"],
signerResolversByFamily: {
evm: async ({ network }) => resolveManagedEvmSigner(network),
svm: async ({ network }) => resolveManagedSolanaSigner(network),
},
});The normalized module shape is:
preferredNetworks: ordered buyer network preferencesignerResolver(context): final signer resolver consumed bypaidFetchandcreateAgentClient
Use createSignerResolver(...) to keep network and signer-family routing out of endpoint code.
import { createSignerResolver } from "@mintapi/gateway/client";
const signerResolver = createSignerResolver({
signerResolversByFamily: {
evm: async ({ network }) => resolveManagedEvmSigner(network),
svm: async ({ network }) => resolveManagedSolanaSigner(network),
},
});Resolution layers, in order:
signernetworkSigners[network]familySigners[family]signerResolversByNetwork[network]signerResolversByFamily[family]getSigner(context)defaultSignerdefaultSignerResolver(context)
Current signer families used by MintAPI:
base->evmpolygon->evmsolana->svm
paidFetch(...) and paidJson(...) throw typed errors:
PaymentChallengeErrorNoSupportedNetworkErrorSignerUnavailableErrorPaymentHeaderCreationErrorMintApiRequestError
This allows agent runtimes to branch on payment-routing failures vs final API response failures.
- seller keys stay on the server side only
- buyer signing should happen in the agent runtime, not in the MintAPI gateway
- use managed signers, wallet services, KMS, or HSM-backed adapters instead of raw private keys in environment files