# Fal

OpenAPI spec: [https://api.payweave.app/app/app_s2toe3wm927zw060kfhambwz/openapi.json](https://api.payweave.app/app/app_s2toe3wm927zw060kfhambwz/openapi.json)

## Networks

| Name | Mode | CAIP-2 | Chain ID / Cluster | Protocols |
|---|---|---|---|---|
| Tempo Mainnet | live | `eip155:4217` | 4217 | mpp |
| Solana Mainnet | live | `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` | mainnet-beta | mpp, x402 |
| Base | live | `eip155:8453` | 8453 | x402 |

## Accepted Currencies

| Symbol | Name | Decimals | Network | Address | Protocols |
|---|---|---|---|---|---|
| USDC.e | Bridged USDC (Stargate) | 6 | `eip155:4217` | `0x20c000000000000000000000b9537d11c60e8b50` | mpp |
| USDC | USD Coin (Solana) | 6 | `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` | `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v` | mpp, x402 |
| USDC | USD Coin | 6 | `eip155:8453` | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | x402 |

## Endpoints (13)

### Fal: fal-ai/bytedance/seedream/v4/edit-2k

ByteDance Seedream V4 edit at 2MP (1448×1448). Higher-resolution tier.

- Method: POST
- Path: `/models/fal-ai/bytedance/seedream/v4/edit-2k/run`
- Price: $0.12000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "image_urls": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          },
          "minItems": 1,
          "maxItems": 4
        },
        "enable_safety_checker": {
          "type": "boolean"
        },
        "seed": {
          "type": "integer",
          "minimum": 0,
          "description": "Random seed; omit for non-deterministic outputs."
        }
      },
      "required": [
        "prompt",
        "image_urls"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit-2k/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_urls": [
        "https://example.com"
      ],
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit-2k/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_urls": [
        "https://example.com"
      ],
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit-2k/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_urls":["https://example.com"],"enable_safety_checker":false}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit-2k/run" -X POST --json '{"input":{"prompt":"","image_urls":["https://example.com"],"enable_safety_checker":false}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit-2k/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_urls":["https://example.com"],"enable_safety_checker":false}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit-2k/run" -m POST -b '{"input":{"prompt":"","image_urls":["https://example.com"],"enable_safety_checker":false}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit-2k/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_urls": [
        "https://example.com"
      ],
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit-2k/run" -m POST -b '{"input":{"prompt":"","image_urls":["https://example.com"],"enable_safety_checker":false}}' -p x402
```

### Fal: fal-ai/bytedance/seedream/v4/edit

ByteDance Seedream V4 edit at 1MP. Multi-image instruction edit.

- Method: POST
- Path: `/models/fal-ai/bytedance/seedream/v4/edit/run`
- Price: $0.06000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "image_urls": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          },
          "minItems": 1,
          "maxItems": 4
        },
        "enable_safety_checker": {
          "type": "boolean"
        },
        "seed": {
          "type": "integer",
          "minimum": 0,
          "description": "Random seed; omit for non-deterministic outputs."
        }
      },
      "required": [
        "prompt",
        "image_urls"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_urls": [
        "https://example.com"
      ],
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_urls": [
        "https://example.com"
      ],
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_urls":["https://example.com"],"enable_safety_checker":false}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit/run" -X POST --json '{"input":{"prompt":"","image_urls":["https://example.com"],"enable_safety_checker":false}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_urls":["https://example.com"],"enable_safety_checker":false}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit/run" -m POST -b '{"input":{"prompt":"","image_urls":["https://example.com"],"enable_safety_checker":false}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_urls": [
        "https://example.com"
      ],
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/edit/run" -m POST -b '{"input":{"prompt":"","image_urls":["https://example.com"],"enable_safety_checker":false}}' -p x402
```

### Fal: fal-ai/bytedance/seedream/v4/text-to-image-2k

ByteDance Seedream V4 at 2MP (1448×1448). Higher-resolution tier.

- Method: POST
- Path: `/models/fal-ai/bytedance/seedream/v4/text-to-image-2k/run`
- Price: $0.12000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "enable_safety_checker": {
          "type": "boolean"
        },
        "seed": {
          "type": "integer",
          "minimum": 0,
          "description": "Random seed; omit for non-deterministic outputs."
        }
      },
      "required": [
        "prompt"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image-2k/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "enable_safety_checker": false,
      "seed": 0
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image-2k/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "enable_safety_checker": false,
      "seed": 0
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image-2k/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","enable_safety_checker":false,"seed":0}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image-2k/run" -X POST --json '{"input":{"prompt":"","enable_safety_checker":false,"seed":0}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image-2k/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","enable_safety_checker":false,"seed":0}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image-2k/run" -m POST -b '{"input":{"prompt":"","enable_safety_checker":false,"seed":0}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image-2k/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "enable_safety_checker": false,
      "seed": 0
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image-2k/run" -m POST -b '{"input":{"prompt":"","enable_safety_checker":false,"seed":0}}' -p x402
```

### Fal: fal-ai/bytedance/seedream/v4/text-to-image

ByteDance Seedream V4 at 1MP. Unified arch, strong photorealism baseline.

- Method: POST
- Path: `/models/fal-ai/bytedance/seedream/v4/text-to-image/run`
- Price: $0.06000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "enable_safety_checker": {
          "type": "boolean"
        },
        "seed": {
          "type": "integer",
          "minimum": 0,
          "description": "Random seed; omit for non-deterministic outputs."
        }
      },
      "required": [
        "prompt"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "enable_safety_checker": false,
      "seed": 0
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "enable_safety_checker": false,
      "seed": 0
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","enable_safety_checker":false,"seed":0}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image/run" -X POST --json '{"input":{"prompt":"","enable_safety_checker":false,"seed":0}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","enable_safety_checker":false,"seed":0}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image/run" -m POST -b '{"input":{"prompt":"","enable_safety_checker":false,"seed":0}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "enable_safety_checker": false,
      "seed": 0
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/bytedance/seedream/v4/text-to-image/run" -m POST -b '{"input":{"prompt":"","enable_safety_checker":false,"seed":0}}' -p x402
```

### Fal: fal-ai/flux/dev

FLUX Dev (open weights). Better quality than schnell, slower.

- Method: POST
- Path: `/models/fal-ai/flux/dev/run`
- Price: $0.05000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "image_size": {
          "type": "string",
          "enum": [
            "square_hd",
            "square",
            "portrait_4_3",
            "portrait_16_9",
            "landscape_4_3",
            "landscape_16_9"
          ]
        },
        "num_inference_steps": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50
        },
        "guidance_scale": {
          "type": "number",
          "minimum": 0,
          "maximum": 20
        },
        "enable_safety_checker": {
          "type": "boolean"
        },
        "output_format": {
          "type": "string",
          "enum": [
            "jpeg",
            "png"
          ]
        },
        "seed": {
          "type": "integer",
          "minimum": 0,
          "description": "Random seed; omit for non-deterministic outputs."
        }
      },
      "required": [
        "prompt"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/flux/dev/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_size": "square_hd",
      "num_inference_steps": 1
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/flux/dev/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_size": "square_hd",
      "num_inference_steps": 1
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/flux/dev/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_size":"square_hd","num_inference_steps":1}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/flux/dev/run" -X POST --json '{"input":{"prompt":"","image_size":"square_hd","num_inference_steps":1}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/flux/dev/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_size":"square_hd","num_inference_steps":1}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/flux/dev/run" -m POST -b '{"input":{"prompt":"","image_size":"square_hd","num_inference_steps":1}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/flux/dev/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_size": "square_hd",
      "num_inference_steps": 1
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/flux/dev/run" -m POST -b '{"input":{"prompt":"","image_size":"square_hd","num_inference_steps":1}}' -p x402
```

### Fal: fal-ai/flux-pro/kontext

Instruction-based image editing. "Change the background to a snowy mountain."

- Method: POST
- Path: `/models/fal-ai/flux-pro/kontext/run`
- Price: $0.08000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "image_url": {
          "type": "string",
          "format": "uri",
          "description": "Image to edit (instruction-based)."
        },
        "aspect_ratio": {
          "type": "string",
          "enum": [
            "1:1",
            "16:9",
            "9:16",
            "4:3",
            "3:4",
            "3:2",
            "2:3",
            "21:9",
            "9:21"
          ]
        },
        "safety_tolerance": {
          "type": "string",
          "enum": [
            "1",
            "2",
            "3",
            "4",
            "5",
            "6"
          ],
          "description": "Content safety strictness; 1=strictest, 6=most permissive. Default 2."
        },
        "output_format": {
          "type": "string",
          "enum": [
            "jpeg",
            "png"
          ]
        },
        "seed": {
          "type": "integer",
          "minimum": 0,
          "description": "Random seed; omit for non-deterministic outputs."
        }
      },
      "required": [
        "prompt",
        "image_url"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/flux-pro/kontext/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_url": "https://example.com",
      "aspect_ratio": "1:1"
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/flux-pro/kontext/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_url": "https://example.com",
      "aspect_ratio": "1:1"
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/flux-pro/kontext/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_url":"https://example.com","aspect_ratio":"1:1"}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/flux-pro/kontext/run" -X POST --json '{"input":{"prompt":"","image_url":"https://example.com","aspect_ratio":"1:1"}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/flux-pro/kontext/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_url":"https://example.com","aspect_ratio":"1:1"}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/flux-pro/kontext/run" -m POST -b '{"input":{"prompt":"","image_url":"https://example.com","aspect_ratio":"1:1"}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/flux-pro/kontext/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_url": "https://example.com",
      "aspect_ratio": "1:1"
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/flux-pro/kontext/run" -m POST -b '{"input":{"prompt":"","image_url":"https://example.com","aspect_ratio":"1:1"}}' -p x402
```

### Fal: fal-ai/flux-pro/v1.1

BFL flagship. Best quality/speed balance for production work.

- Method: POST
- Path: `/models/fal-ai/flux-pro/v1.1/run`
- Price: $0.08000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "aspect_ratio": {
          "type": "string",
          "enum": [
            "1:1",
            "16:9",
            "9:16",
            "4:3",
            "3:4",
            "21:9",
            "9:21",
            "3:2",
            "2:3",
            "4:5",
            "5:4",
            "16:10",
            "10:16"
          ]
        },
        "enable_safety_checker": {
          "type": "boolean"
        },
        "safety_tolerance": {
          "type": "string",
          "enum": [
            "1",
            "2",
            "3",
            "4",
            "5",
            "6"
          ],
          "description": "Content safety strictness; 1=strictest, 6=most permissive. Default 2."
        },
        "output_format": {
          "type": "string",
          "enum": [
            "jpeg",
            "png"
          ]
        },
        "seed": {
          "type": "integer",
          "minimum": 0,
          "description": "Random seed; omit for non-deterministic outputs."
        }
      },
      "required": [
        "prompt"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/flux-pro/v1.1/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "aspect_ratio": "1:1",
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/flux-pro/v1.1/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "aspect_ratio": "1:1",
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/flux-pro/v1.1/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","aspect_ratio":"1:1","enable_safety_checker":false}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/flux-pro/v1.1/run" -X POST --json '{"input":{"prompt":"","aspect_ratio":"1:1","enable_safety_checker":false}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/flux-pro/v1.1/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","aspect_ratio":"1:1","enable_safety_checker":false}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/flux-pro/v1.1/run" -m POST -b '{"input":{"prompt":"","aspect_ratio":"1:1","enable_safety_checker":false}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/flux-pro/v1.1/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "aspect_ratio": "1:1",
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/flux-pro/v1.1/run" -m POST -b '{"input":{"prompt":"","aspect_ratio":"1:1","enable_safety_checker":false}}' -p x402
```

### Fal: fal-ai/flux-pro/v1.1-ultra

BFL flagship at 4MP output. For posters, prints, and high-detail use.

- Method: POST
- Path: `/models/fal-ai/flux-pro/v1.1-ultra/run`
- Price: $0.12000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "aspect_ratio": {
          "type": "string",
          "enum": [
            "1:1",
            "16:9",
            "9:16",
            "4:3",
            "3:4",
            "21:9",
            "9:21",
            "3:2",
            "2:3"
          ]
        },
        "enable_safety_checker": {
          "type": "boolean"
        },
        "safety_tolerance": {
          "type": "string",
          "enum": [
            "1",
            "2",
            "3",
            "4",
            "5",
            "6"
          ],
          "description": "Content safety strictness; 1=strictest, 6=most permissive. Default 2."
        },
        "output_format": {
          "type": "string",
          "enum": [
            "jpeg",
            "png"
          ]
        },
        "raw": {
          "type": "boolean",
          "description": "Skip prompt enhancement for a more literal interpretation."
        },
        "seed": {
          "type": "integer",
          "minimum": 0,
          "description": "Random seed; omit for non-deterministic outputs."
        }
      },
      "required": [
        "prompt"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/flux-pro/v1.1-ultra/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "aspect_ratio": "1:1",
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/flux-pro/v1.1-ultra/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "aspect_ratio": "1:1",
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/flux-pro/v1.1-ultra/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","aspect_ratio":"1:1","enable_safety_checker":false}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/flux-pro/v1.1-ultra/run" -X POST --json '{"input":{"prompt":"","aspect_ratio":"1:1","enable_safety_checker":false}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/flux-pro/v1.1-ultra/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","aspect_ratio":"1:1","enable_safety_checker":false}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/flux-pro/v1.1-ultra/run" -m POST -b '{"input":{"prompt":"","aspect_ratio":"1:1","enable_safety_checker":false}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/flux-pro/v1.1-ultra/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "aspect_ratio": "1:1",
      "enable_safety_checker": false
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/flux-pro/v1.1-ultra/run" -m POST -b '{"input":{"prompt":"","aspect_ratio":"1:1","enable_safety_checker":false}}' -p x402
```

### Fal: fal-ai/flux/schnell

Fastest FLUX. ~2s per image. Cheap drafts and high-volume gen.

- Method: POST
- Path: `/models/fal-ai/flux/schnell/run`
- Price: $0.01000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "image_size": {
          "type": "string",
          "enum": [
            "square_hd",
            "square",
            "portrait_4_3",
            "portrait_16_9",
            "landscape_4_3",
            "landscape_16_9"
          ]
        },
        "num_inference_steps": {
          "type": "integer",
          "minimum": 1,
          "maximum": 12
        },
        "enable_safety_checker": {
          "type": "boolean"
        },
        "output_format": {
          "type": "string",
          "enum": [
            "jpeg",
            "png"
          ]
        },
        "seed": {
          "type": "integer",
          "minimum": 0,
          "description": "Random seed; omit for non-deterministic outputs."
        }
      },
      "required": [
        "prompt"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/flux/schnell/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_size": "square_hd",
      "num_inference_steps": 1
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/flux/schnell/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_size": "square_hd",
      "num_inference_steps": 1
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/flux/schnell/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_size":"square_hd","num_inference_steps":1}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/flux/schnell/run" -X POST --json '{"input":{"prompt":"","image_size":"square_hd","num_inference_steps":1}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/flux/schnell/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_size":"square_hd","num_inference_steps":1}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/flux/schnell/run" -m POST -b '{"input":{"prompt":"","image_size":"square_hd","num_inference_steps":1}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/flux/schnell/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_size": "square_hd",
      "num_inference_steps": 1
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/flux/schnell/run" -m POST -b '{"input":{"prompt":"","image_size":"square_hd","num_inference_steps":1}}' -p x402
```

### Fal: fal-ai/imageutils/rembg

Background removal. Returns the input image with transparent background.

- Method: POST
- Path: `/models/fal-ai/imageutils/rembg/run`
- Price: $0.02000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "image_url": {
          "type": "string",
          "format": "uri",
          "description": "Image to remove background from."
        }
      },
      "required": [
        "image_url"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/imageutils/rembg/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "image_url": "https://example.com"
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/imageutils/rembg/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "image_url": "https://example.com"
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/imageutils/rembg/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"image_url":"https://example.com"}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/imageutils/rembg/run" -X POST --json '{"input":{"image_url":"https://example.com"}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/imageutils/rembg/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"image_url":"https://example.com"}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/imageutils/rembg/run" -m POST -b '{"input":{"image_url":"https://example.com"}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/imageutils/rembg/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "image_url": "https://example.com"
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/imageutils/rembg/run" -m POST -b '{"input":{"image_url":"https://example.com"}}' -p x402
```

### Fal: fal-ai/nano-banana/edit

Google nano-banana edit. Instruction-based edit, accepts multiple sources.

- Method: POST
- Path: `/models/fal-ai/nano-banana/edit/run`
- Price: $0.08000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "image_urls": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          },
          "minItems": 1,
          "maxItems": 4,
          "description": "Source images to edit."
        },
        "output_format": {
          "type": "string",
          "enum": [
            "jpeg",
            "png"
          ]
        }
      },
      "required": [
        "prompt",
        "image_urls"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/nano-banana/edit/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_urls": [
        "https://example.com"
      ],
      "output_format": "jpeg"
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/nano-banana/edit/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_urls": [
        "https://example.com"
      ],
      "output_format": "jpeg"
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/nano-banana/edit/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_urls":["https://example.com"],"output_format":"jpeg"}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/nano-banana/edit/run" -X POST --json '{"input":{"prompt":"","image_urls":["https://example.com"],"output_format":"jpeg"}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/nano-banana/edit/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_urls":["https://example.com"],"output_format":"jpeg"}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/nano-banana/edit/run" -m POST -b '{"input":{"prompt":"","image_urls":["https://example.com"],"output_format":"jpeg"}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/nano-banana/edit/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_urls": [
        "https://example.com"
      ],
      "output_format": "jpeg"
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/nano-banana/edit/run" -m POST -b '{"input":{"prompt":"","image_urls":["https://example.com"],"output_format":"jpeg"}}' -p x402
```

### Fal: fal-ai/nano-banana

Google nano-banana. Fast SOTA general image generation.

- Method: POST
- Path: `/models/fal-ai/nano-banana/run`
- Price: $0.08000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "output_format": {
          "type": "string",
          "enum": [
            "jpeg",
            "png"
          ]
        }
      },
      "required": [
        "prompt"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/nano-banana/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "output_format": "jpeg"
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/nano-banana/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "output_format": "jpeg"
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/nano-banana/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","output_format":"jpeg"}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/nano-banana/run" -X POST --json '{"input":{"prompt":"","output_format":"jpeg"}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/nano-banana/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","output_format":"jpeg"}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/nano-banana/run" -m POST -b '{"input":{"prompt":"","output_format":"jpeg"}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/nano-banana/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "output_format": "jpeg"
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/nano-banana/run" -m POST -b '{"input":{"prompt":"","output_format":"jpeg"}}' -p x402
```

### Fal: fal-ai/recraft-v3

Best-in-class for typography, posters, brand assets, and vector output.

- Method: POST
- Path: `/models/fal-ai/recraft-v3/run`
- Price: $0.08000000

**Input Schema**

```json
{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "properties": {
        "prompt": {
          "type": "string",
          "minLength": 1,
          "maxLength": 5000,
          "description": "Text prompt describing the desired image."
        },
        "image_size": {
          "type": "string",
          "enum": [
            "square_hd",
            "square",
            "portrait_4_3",
            "portrait_16_9",
            "landscape_4_3",
            "landscape_16_9"
          ]
        },
        "style": {
          "type": "string",
          "description": "Recraft style id, e.g. 'realistic_image', 'digital_illustration', 'vector_illustration'."
        },
        "colors": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "r": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "g": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "b": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              }
            },
            "required": [
              "r",
              "g",
              "b"
            ],
            "additionalProperties": false
          }
        },
        "style_id": {
          "type": "string"
        }
      },
      "required": [
        "prompt"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}
```

**Output Schema**

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "fal request id."
    },
    "model": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "succeeded"
    },
    "output": {
      "description": "Model-specific output. Image models return one or more CDN URLs (fal-hosted, ~24h TTL); vision-LLM models return text."
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "metrics": {
      "type": "object",
      "properties": {
        "inference_time": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "predicted_price_usd": {
      "type": "string",
      "description": "USD charged for this call."
    }
  },
  "required": [
    "id",
    "model",
    "status",
    "error",
    "predicted_price_usd"
  ],
  "additionalProperties": false,
  "description": "fal job result with metadata."
}
```

## How to invoke

Payment is handled automatically — the client signs the 402 challenge and retries.

### TypeScript — Tempo (mppx + fetch) ([docs](https://mpp.dev/sdk/typescript/client))

```ts
import { privateKeyToAccount } from 'viem/accounts'
import { Mppx, tempo } from 'mppx/client'

Mppx.create({
  methods: [tempo({ account: privateKeyToAccount('0x...') })],
})

const res = await fetch('https://fal.payweave.services/models/fal-ai/recraft-v3/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_size": "square_hd",
      "style": ""
    }
  }),
})
const data = await res.json()
```

### TypeScript — Solana (@solana/mpp + fetch) ([docs](https://github.com/solana-foundation/mpp-sdk))

```ts
import { createKeyPairSignerFromBytes } from '@solana/kit'
import { Mppx } from 'mppx/client'
import { solana } from '@solana/mpp/client'

const signer = await createKeyPairSignerFromBytes(/* 64-byte secret key */)
Mppx.create({ methods: [solana({ signer })] })

const res = await fetch('https://fal.payweave.services/models/fal-ai/recraft-v3/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_size": "square_hd",
      "style": ""
    }
  }),
})
const data = await res.json()
```

### mppx CLI ([docs](https://mpp.dev/sdk/typescript/cli))

```sh
npx mppx "https://fal.payweave.services/models/fal-ai/recraft-v3/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_size":"square_hd","style":""}}'
```

### Tempo Wallet ([docs](https://docs.tempo.xyz/cli/wallet))

```sh
tempo request "https://fal.payweave.services/models/fal-ai/recraft-v3/run" -X POST --json '{"input":{"prompt":"","image_size":"square_hd","style":""}}'
```

### pay.sh — Solana Foundation ([docs](https://pay.sh))

```sh
pay --mainnet curl "https://fal.payweave.services/models/fal-ai/recraft-v3/run" -X POST -H 'Content-Type: application/json' -d '{"input":{"prompt":"","image_size":"square_hd","style":""}}'
```

### agentcash CLI ([docs](https://www.npmjs.com/package/agentcash))

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/recraft-v3/run" -m POST -b '{"input":{"prompt":"","image_size":"square_hd","style":""}}' -p mpp
```

### x402 — Base / Solana USDC (x402-fetch) ([docs](https://x402.org))

```ts
import { wrapFetchWithPayment } from 'x402-fetch'
import { privateKeyToAccount } from 'viem/accounts'

const account = privateKeyToAccount('0x...') // Base USDC wallet
const fetchWithPay = wrapFetchWithPayment(fetch, account)

const res = await fetchWithPay('https://fal.payweave.services/models/fal-ai/recraft-v3/run', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": {
      "prompt": "",
      "image_size": "square_hd",
      "style": ""
    }
  }),
})
const data = await res.json()
```

### x402 — agentcash CLI

```sh
npx agentcash fetch "https://fal.payweave.services/models/fal-ai/recraft-v3/run" -m POST -b '{"input":{"prompt":"","image_size":"square_hd","style":""}}' -p x402
```
