Skip to main content
Create-like operations require a requestId to ensure retries do not create duplicates. Generate a UUIDv4 on your side and reuse it when retrying the same operation. If you replay the exact same request, the API returns the original resource instead of creating a second one. If the same requestId is reused with a different payload, the API returns a 409. Create a portfolio wallet with a requestId
cURL
curl -X POST "$BASE_URL/v2/wallets" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "requestId": "f0a3afc3-1e67-4c0c-a8e1-3f5d8fb9a23b",
    "label": "Core Yield Portfolio",
    "strategy": {
      "allocations": [
        { "yieldSourceId": "syrup-usdc", "pct": 35 },
        { "yieldSourceId": "morpho-gauntlet-usdc", "pct": 35 },
        { "yieldSourceId": "morpho-steakhouse-usdc", "pct": 30 }
      ]
    }
  }'
The canonical public request shape uses yieldSourceId and pct. Existing clients using legacy positionKey / targetWeightBps payloads can continue to retry idempotently without breaking. Duplicate requestId response
{
  "error": "Duplicate requestId",
  "code": "duplicate_request_id"
}