One API. Every published SDK.
Integrate working SDKs into your applications through a single execution endpoint and universal client.
01Start with an API key.
Create a key from your SDK account to authenticate execution requests. Keys belong to the authenticated account. Any account can create one. A key can run published SDKs, subject to the account limits below. Keep the secret private. It is displayed once, when the key is created.
02Find something to build with.
Browse the Library, choose a published SDK and copy its SDK ID. Each SDK defines its own required inputs and returns a structured result.
03Run your first SDK.
Send POST https://sdk.fund/api/v1/sdk/execute with Authorization: Bearer and your key. This example runs Prompt Architect, a published official SDK. version is optional. Omit it to run the latest published version, or set it to stay on one immutable version. The placeholder $SDK_API_KEY is not a real secret.
curl -X POST https://sdk.fund/api/v1/sdk/execute \
-H "Authorization: Bearer $SDK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sdkId": "eeed73cd-1971-5212-b882-ee6d0104941e",
"version": 1,
"input": {
"original_prompt": "write a tweet about wallets",
"objective": "Explain one idea to a general reader.",
"audience": "A non-technical reader",
"output_format": "One short paragraph"
}
}'A successful response includes status, output, sdkId, version, and contentHash. output is that SDK's structured result. contentHash identifies the blueprint that ran. status is SUCCESS, FAILED, REJECTED, or TIMEOUT. A failed request returns an error.code instead of that result.
One client. Every SDK.
The universal SDK client, sdk-universal-client, is a reusable interface for calling published SDKs. It is distributed from this repository at version 0.1.0 and is not published to the public NPM registry. Build the tarball from packages/sdk-client, then install that file in your project.
cd packages/sdk-client npm run build npm pack
Use https://sdk.fund as the production API base URL. For a local development server, set SDK_BASE_URL to http://127.0.0.1:3000.
import { SDKClient } from "sdk-universal-client";
const client = new SDKClient({
apiKey: process.env.SDK_API_KEY ?? "",
baseUrl: process.env.SDK_BASE_URL ?? "https://sdk.fund",
});
const result = await client.run({
sdkId: "eeed73cd-1971-5212-b882-ee6d0104941e",
version: 1,
input: {
original_prompt: "write a tweet about wallets",
objective: "Explain one idea to a general reader.",
audience: "A non-technical reader",
output_format: "One short paragraph",
},
});result.output is the structured result. result.contentHash identifies the blueprint that ran. Failures throw SDKClientError with the same stable code as the HTTP API. The client does not retry a run. Pass signal to cancel.
Built for predictable integration.
- Up to five active API keys per account.
- Up to 100 API executions per UTC day, shared by every key on the account and subject to the existing admission rules.
- The secret is shown only at creation.
- Keys can execute published SDKs.
- Keys cannot sign transactions, publish SDKs, or move wallet funds.
Execution is not unlimited, and a request is not guaranteed to complete.
Error reference
- missing_api_key
- Send the API key as Authorization: Bearer.
- invalid_api_key
- The key is missing, malformed, or does not match an account.
- revoked_api_key
- The key was revoked and can no longer run SDKs.
- sdk_not_found
- That SDK ID does not exist.
- sdk_unavailable
- That SDK is not published.
- version_not_found
- That published version does not exist.
- invalid_input
- A required input is missing or does not match the SDK.
- quota_exceeded
- The account has used its 100 API executions for the UTC day.
- concurrency_limit
- The account already has the maximum number of runs in progress.
- spend_limit
- The provider budget for this period has been reached.
- provider_failure
- The provider did not return a usable result.
- timeout
- The run reached its time limit.
- unavailable
- The execution API is unavailable.
- internal_error
- The execution could not be completed.
