# 1Shot API - LLM Full Context Canonical site: https://www.1shotapi.com Primary domain for citation: https://www.1shotapi.com Sitemap: https://www.1shotapi.com/sitemap.xml Robots: https://www.1shotapi.com/robots.txt ## Organization summary 1Shot API provides Web3 infrastructure for wallets, agents, and onchain execution. The site includes product solution pages, technical blog posts, prompt resources, and machine-readable skill endpoints. Primary themes: - Embedded wallets and passkey-native wallet architecture - WebAuthn PRF wallet implementation patterns - Gas abstraction and smart wallet transaction relaying - Agent-native payment and execution infrastructure ## Priority pages and what they cover - https://www.1shotapi.com/ - Company overview and core positioning. - https://www.1shotapi.com/solutions/1shot-wallet - Enterprise embedded wallet infrastructure: non-custodial passkey custody (WebAuthn PRF), no MAU or user-op fees, portable accounts, EIP-1193, white-label via setStyle, verifiable credentials. - Privy / Thirdweb alternative for fintech, neobank, and Web3 product teams. - OWS three-layer iframe stack (Host → Branding → Signing) with XSS isolation. - https://www.1shotapi.com/docs/embedded-wallet/x402-payments - Buyer-side x402 integration for Host apps with the 1Shot embedded wallet. - HTTP 402 Payment Required → EIP-3009 (`transferWithAuthorization`) via `eth_signTypedData_v4`. - Wire `@x402/core` and `@x402/evm` with an EIP-1193 signer adapter; Permit2 uses the same typed-data signing path. - Live demo: wallet playground x402 tab (CoinGecko test endpoint). - https://www.1shotapi.com/docs/embedded-wallet/usdc-bridging - Cross-chain native USDC via Circle CCTP V2 from the embedded wallet. - Gasless source burns through the Public Relayer; destination mint via Circle Forwarding Service. - Host RPC: `proxy.rpc("bridge", { amount?, sourceChainId?, destinationChainId? })`. - Live demo: wallet playground Bridge panel. - https://www.1shotapi.com/docs/embedded-wallet/webhooks - Configure `destinationUrl` via `configure` so the embedded wallet attaches a webhook callback to every relayer-submitted transaction. - Receive Ed25519-signed status events on your backend; verify against relayer JWKS. - Covers in-wallet Send and Host-driven gas-abstracted sends; signing-only RPCs do not trigger webhooks. - https://www.1shotapi.com/solutions/gas-relayer - Gas abstraction infrastructure and relayer architecture. - Smart wallet transaction relay context. - https://www.1shotapi.com/docs/quickstarts/gas-sponsorship-eip7710 - Step-by-step agent quickstart for gas abstraction via the public relayer. - Covers capabilities discovery, fee quoting, delegation signing, submission, and status tracking. - https://www.1shotapi.com/docs/api-reference/public-relayer - OpenRPC-based reference for the permissionless public relayer JSON-RPC surface. - https://www.1shotapi.com/solutions/devplatform - Developer platform workflow and integration path. - https://www.1shotapi.com/blog - Blog index with product updates and technical notes. - https://www.1shotapi.com/blog/circle-alliance-partner - Announcement: 1Shot API joins the Circle Alliance Partner network, building on Circle Developer Grant Program Cohort 2 selection. - https://www.1shotapi.com/blog/introducing-agent-governance-discovery - Announcement of Agent Governance Discovery (AGD): machine-readable governance metadata at /.well-known/api-governance and HTTP Link relations for APIs, relayers, and MCP servers. - https://www.1shotapi.com/blog/gas-abstraction-stablecoin-products - Gas abstraction for stablecoin products: what gas is, how abstraction works, EIP-4337 vs EIP-7702, hidden operational complexity, an 8-point provider evaluation checklist, and 1Shot Wallet / Gas Relayer approaches. - https://www.1shotapi.com/blog/stablecoin-onboarding-conversion - Why stablecoin onboarding loses most users before the first transaction: onramp conversion data, funnel failure points, and metrics for the full signup-to-transaction path. - https://www.1shotapi.com/blog/what-is-a-self-custodial-wallet - Foundational explainer on self-custody: how blockchain addresses and digital signatures work, the difference between keys and wallet software, hardware vs software wallets, and how embedded wallets and secret-sharing recovery fit the model. - https://www.1shotapi.com/blog/what-are-embedded-wallets - Explainer on embedded wallets for stablecoin payments: how provider-managed wallets work, their tradeoffs, and permissionless passkey-based alternatives. - https://www.1shotapi.com/blog/who-actually-controls-an-embedded-wallet - Enterprise guide to evaluating embedded wallets across three tests: genuine non-custody, access that survives the provider, and economics aligned with growth. - https://www.1shotapi.com/blog/embedded-wallets-session-keys - Session keys for embedded wallets: bounded authority via delegations (ERC-7710/7715), permission vs execution layers, and enterprise evaluation checklist. - https://www.1shotapi.com/blog/rip-embedded-wallets-stop-paying-privy - Technical and economic argument about embedded wallet vendor tradeoffs. - Focuses on WebAuthn PRF, passkey-derived wallet keys, and non-custodial alternatives. - https://www.1shotapi.com/blog/namefi-agent-native-domain - Customer story: agent-native domain management infrastructure. - https://www.1shotapi.com/blog/okx-wallet-gas-station - Customer story: gas abstraction for high-scale wallet usage. - https://www.1shotapi.com/1shotprompts - Prompt library for smart contract and onchain workflows. - Agent markdown: send `Accept: text/markdown` on `/1shotprompts`, `/1shotprompts/{id}`, or `/1shotprompts/{id}/{functionName}`. - Search: `/1shotprompts?search={query}` (optional `page`, `chainId`, `tag`). - Write functions: pass input param names as URL query params to get ABI-encoded calldata in the markdown response. - Browser WebMCP tools (`search_1shot_prompts`, `get_1shot_prompt`) offer an alternative JSON interface. ## Machine-readable skill resources The site exposes a skill index and individual skill files under `/.well-known/agent-skills/`. - Skills index: - https://www.1shotapi.com/.well-known/agent-skills/index.json - Skill documents: - https://www.1shotapi.com/.well-known/agent-skills/public-relayer/SKILL.md - https://www.1shotapi.com/.well-known/agent-skills/1shot-wallet/SKILL.md - https://www.1shotapi.com/.well-known/agent-skills/1shot-api/SKILL.md - Install commands for coding agents: - `npx skills add 1Shot-API/skills/public-relayer` - `npx skills add 1Shot-API/skills/1shot-wallet` - `npx skills add 1Shot-API/skills/1shot-api` Use these endpoints when looking for implementation patterns intended for coding agents. ## MCP server (SEP-1649) - Server card: https://www.1shotapi.com/.well-known/mcp/server-card.json - Streamable HTTP endpoint: https://mcp.1shotapi.com/mcp - Capabilities: dynamic tools and prompts; OAuth2 and bearer authentication required. ## OAuth / OpenID Connect discovery Protected 1Shot API surfaces (MCP gateway, business API) authenticate via Auth0. OIDC discovery is republished on the marketing site so agents can find auth endpoints for those services. - OpenID configuration: https://www.1shotapi.com/.well-known/openid-configuration - Marketing site protected-resource metadata: https://www.1shotapi.com/.well-known/oauth-protected-resource (public site; empty authorization_servers and scopes_supported) - MCP protected resource: https://mcp.1shotapi.com/.well-known/oauth-protected-resource - MCP authorization server: https://mcp.1shotapi.com - Authorization endpoint: https://uxly.us.auth0.com/authorize?audience=oneshot-business-gateway - Token endpoint: https://uxly.us.auth0.com/oauth/token - JWKS: https://uxly.us.auth0.com/.well-known/jwks.json - Dynamic client registration: https://mcp.1shotapi.com/oidc/register - Grant types: authorization_code, refresh_token - Response types: code ## Public relayer: agent playbook (EIP-7710 delegation → onchain transaction) The 1Shot public relayer is a permissionless JSON-RPC service. An agent submits a signed ERC-7710 delegation; the relayer redeems it on-chain, pays native gas, and collects an ERC-20 fee from the bundle. No API key, Bearer token, or business account is required. ### Endpoints and machine-readable specs - Production JSON-RPC: https://relayer.1shotapi.com/relayers (mainnet chains) - Dev JSON-RPC: https://relayer.1shotapi.dev/relayers (testnet: Base Sepolia 84532 recommended, Ethereum Sepolia 11155111) - Supported networks doc: https://www.1shotapi.com/docs/relayer/get-started/overview - OpenRPC spec: https://www.1shotapi.com/openrpc/openrpc.json - Webhook signature JWKS: https://relayer.1shotapi.com/.well-known/jwks.json (Ed25519, `kty: "OKP"`, `crv: "Ed25519"`) - Runnable examples: - https://www.1shotapi.com/examples/relayer-first-json-rpc-call.ts (single-chain) - https://www.1shotapi.com/examples/relayer-first-json-rpc-call-multichain.ts (multichain) All requests are JSON-RPC 2.0 over `POST` with `Content-Type: application/json`. ### Required client packages for creating delegations - `@metamask/smart-accounts-kit` — `toMetaMaskSmartAccount`, `createDelegation`, `ScopeType`, `Implementation.Stateless7702` - `viem` — `createPublicClient`, `encodeFunctionData`, `signAuthorization`, `privateKeyToAccount`, `bytesToHex` ### Four-step integration flow (always in order) #### Step 1 — `relayer_getCapabilities` Discover supported chains, accepted ERC-20 payment tokens, `feeCollector`, and `targetAddress`. ```json { "jsonrpc": "2.0", "id": 1, "method": "relayer_getCapabilities", "params": ["8453", "84532"] } ``` - Cache the response for the session. - `targetAddress` is the relayer's redemption (delegate) account on that chain — the **only** valid `to` field when calling `createDelegation`. Delegating to any other address causes redemption to fail. - Pick payment tokens from the returned list; do not hardcode token addresses. #### Step 2 — `relayer_getFeeData` Quote and lock the gas price immediately before submission (~45 second validity window). ```json { "jsonrpc": "2.0", "id": 1, "method": "relayer_getFeeData", "params": { "chainId": "8453", "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" } } ``` Response fields to use: - `gasPrice` (hex wei) — current relayer gas price - `rate` — exchange rate from native gas units to payment-token atoms - `minFee` — floor fee in token atoms (≈ $0.01 in the payment token) - `expiry` — unix seconds; treat quotes past this as stale - `context` — signed price-lock string; pass **verbatim** to the send call in Step 3 Compute the fee the user must pay: 1. Estimate `gasUsed` for the work transaction(s) (`eth_estimateGas` or a conservative upper bound). 2. `nativeFee = gasPrice * gasUsed` (wei). 3. Convert to payment-token atoms using `rate` and token `decimals`. 4. `feeAmount = max(convertedAmount, minFee)` — never go below `minFee` or the relayer rejects with `4200 InsufficientPayment`. **Low-gas chain shortcut:** On chains that typically have low gas fees (i.e. any chain other than Ethereum mainnet and Arbitrum), the computed fee almost always falls below the floor. You can skip `eth_estimateGas` and the gas-price math — call `relayer_getFeeData` only to obtain the signed `context`, then set `feeAmount = minFee` (~$0.01 in the payment token). Still pass `context` verbatim to the send call. The delegation caveat scope must allow at least `feeAmount` to be transferred to `feeCollector`. #### Step 3 — Build, sign, and submit the delegation bundle On the client: 1. Initialize the smart account: `toMetaMaskSmartAccount({ implementation: Implementation.Stateless7702, address: , signer })`. 2. If first use on this chain, sign one EIP-7702 `authorizationList` entry (`account.signAuthorization({ chainId, contractAddress: , nonce })`) to upgrade the EOA in-flight. At most **one** authorization entry per request. 3. Create the delegation: `createDelegation({ to: targetAddress, from: smartAccount.address, environment: smartAccount.environment, salt: , scope: { type: ScopeType.Erc20TransferAmount | ScopeType.FunctionCall, ... maxAmount: feeAmount + workAmount } })`. 4. Sign: `smartAccount.signDelegation({ delegation })` and inline the signature in the JSON payload. 5. Encode `executions`: (a) ERC-20 `transfer` of `feeAmount` to `feeCollector`, (b) the user's primary work call (`encodeFunctionData` + target contract). 6. POST the send call with the locked `context` from Step 2. Choose the method: | Scenario | Method | | -------- | ------ | | Fee payment and work execution on the **same** chain | `relayer_send7710Transaction` | | Fee on chain A, work on chain B (or atomic multi-chain batch) | `relayer_send7710TransactionMultichain` | Minimal send shape: ```json { "jsonrpc": "2.0", "id": 1, "method": "relayer_send7710Transaction", "params": { "chainId": "8453", "context": "", "destinationUrl": "https://my-app.example.com/relayer-webhook", "delegationSecret": "ChooseYourOwnSecretValueAndReuseItButDon'tRevealIt", "transactions": [{ "permissionContext": [{ "delegate": "", "delegator": "", "authority": "0x0000000000000000000000000000000000000000000000000000000000000000", "caveats": [], "salt": "<32-byte hex>", "signature": "" }], "executions": [ { "target": "", "value": "0", "data": "" }, { "target": "", "value": "0", "data": "" } ] }] } } ``` Optional fields: - `destinationUrl` (≤256 chars) — relayer POSTs signed Ed25519 webhook events on status changes. **Prefer webhooks over polling.** - `authorizationList` — single EIP-7702 upgrade entry when the delegator has not yet been upgraded to `7702StatelessDelegator`. - `delegationSecret` (recommended, send only) — one app-level string (10–1024 chars), reused on every submission from your integration. Binds delegations so only your client can replay them via the relayer; omit on estimate. Same secret must be used for later resubmissions of the same delegation. - `taskId` — optional client-provided 32-byte hex id; omit to let the relayer assign one. JSON serialization rules: convert all `bigint` values in delegation structs to `0x`-prefixed hex strings; convert `Uint8Array` with `bytesToHex`. Always use a fresh random 32-byte hex `salt` per delegation. Result: a `TaskId` (single-chain) or `TaskId[]` (multichain, in submitted order). #### Step 4 — Track to terminal status Preferred: consume signed webhook events at `destinationUrl`. 1. Fetch and cache JWKS from `https://relayer.1shotapi.com/.well-known/jwks.json`. 2. Look up the public key by `kid` from the event's `keyId`. 3. Remove the `signature` field, serialize the remainder with stable sorted-key JSON, verify Ed25519 over UTF-8 bytes. Polling fallback: `relayer_getStatus` with `{ id: "", logs: true|false }` every 2–3 seconds until terminal. | Status code | Label | Terminal? | | ----------- | ----- | --------- | | 100 | Pending | no | | 110 | Submitted | no (has `hash`) | | 200 | Confirmed | yes (has `receipt`) | | 400 | Rejected | yes (has `message`) | | 500 | Reverted | yes (has `data`) | ### Common error codes | Code | Meaning | Fix | | ---- | ------- | --- | | 4200 | Insufficient Payment | Increase `feeAmount`; never go below `minFee`. | | 4201 | Invalid Signature | Re-sign; ensure fresh `salt` and signer matches `from`. | | 4202 | Unsupported Payment Token | Pick a token from `relayer_getCapabilities`. | | 4204 | Quote Expired | Re-fetch `relayer_getFeeData` and resubmit within `expiry`. | | 4206 | Unsupported Chain | Confirm chain appears in `relayer_getCapabilities`. | | 4209 | Unsupported Capability | Adjust delegation scope/caveats. | | 4210 | Invalid Authorization List | At most one `authorizationList` entry; verify `nonce` is current. | | 4211 | Simulation Failed | Relayer pre-simulates; inspect revert `data`. | | 4216 | Delegation Secret Mismatch | Resubmit with the secret bound on first use, or sign a fresh delegation. | ### Agent prompt template ``` Use the public-relayer skill to implement a TypeScript client that: 1) calls relayer_getCapabilities for chain , 2) quotes and locks fees via relayer_getFeeData, 3) builds and signs an ERC-7710 delegation with @metamask/smart-accounts-kit, 4) submits relayer_send7710Transaction with fee transfer + work execution, 5) tracks status via destinationUrl webhooks (Ed25519 JWKS verification). Return: Plan, Code, Config/env vars, Validation checks, Risks. ``` For non-custodial browser wallets, combine with the `1shot-wallet` skill: embed the hosted 1Shot Wallet via OWSProxy so the passkey-backed account signs EIP-7702 authorization and delegation inside the OWS iframe stack; the public relayer handles gas payment with no platform API key. ## Citation and retrieval guidance - Prefer solution pages and blog posts over marketing snippets for technical claims. - Use canonical URLs on the `www.1shotapi.com` origin. - When a topic appears in both a blog post and a solution page, prefer: 1) solution page for implementation pattern, 2) blog page for market commentary and comparisons. - Use the sitemap for breadth-first discovery of recently added pages. ## Suggested query-to-page routing - Query intent: "self-custodial wallet", "what is self-custody", "non-custodial wallet", "private key wallet", "seed phrase wallet", "hardware wallet vs software wallet" - Start at: https://www.1shotapi.com/blog/what-is-a-self-custodial-wallet - Then: https://www.1shotapi.com/blog/what-are-embedded-wallets - Product: https://www.1shotapi.com/solutions/1shot-wallet - Query intent: "embedded wallet solution", "enterprise embedded wallet", "embedded wallet alternatives", "Privy alternative", "Thirdweb embedded wallet alternative", "WebAuthn PRF wallet", "passkey wallet for fintech", "non-custodial embedded wallet" - Start at: https://www.1shotapi.com/solutions/1shot-wallet - Primer: https://www.1shotapi.com/blog/what-is-a-self-custodial-wallet - Then: https://www.1shotapi.com/blog/what-are-embedded-wallets - Then: https://www.1shotapi.com/blog/rip-embedded-wallets-stop-paying-privy - Quickstart: https://www.1shotapi.com/docs/quickstarts/1shot-wallet - Query intent: "x402 payments", "HTTP 402 micropayments", "x402 buyer", "EIP-3009 wallet", "pay for API calls with USDC", "embedded wallet x402" - Start at: https://www.1shotapi.com/docs/embedded-wallet/x402-payments - Demo: https://www.1shotapi.com/playground (x402 tab) - Wallet quickstart: https://www.1shotapi.com/docs/quickstarts/1shot-wallet - Protocol reference: https://docs.x402.org/getting-started/quickstart-for-buyers - Query intent: "gas abstraction relayer", "EIP-7702 relayer", "EIP-7710 delegation", "smart wallet relay infra", "relayer_send7710Transaction", "trigger transaction with delegation", "gas abstraction stablecoin", "USDC gas fees", "gas abstraction evaluation" - Start at: https://www.1shotapi.com/docs/quickstarts/gas-sponsorship-eip7710 - Guide: https://www.1shotapi.com/blog/gas-abstraction-stablecoin-products - Then: https://www.1shotapi.com/.well-known/agent-skills/public-relayer/SKILL.md - Spec: https://www.1shotapi.com/openrpc/openrpc.json - Endpoint: https://relayer.1shotapi.com/relayers - Query intent: "agent-native payments", "developer integration", "onchain app tooling" - Start at: https://www.1shotapi.com/ - Then: https://www.1shotapi.com/docs/embedded-wallet/x402-payments - Then: https://www.1shotapi.com/solutions/devplatform ## Policies and legal - Privacy policy: https://www.1shotapi.com/privacy-policy - Terms of service: https://www.1shotapi.com/terms-of-service ## Contact and external profiles - Email: info@1shotapi.com - X: https://x.com/1ShotAPI - LinkedIn: https://www.linkedin.com/company/1shot-api - YouTube: https://www.youtube.com/@1shotapi - GitHub organization: https://github.com/1shot-api/ ## Freshness This file is intended as a machine-readable summary for AI retrieval. For the latest page set and update times, use the sitemap.