{"openapi":"3.0.0","paths":{"/v2/health":{"get":{"operationId":"get_health","parameters":[],"responses":{"200":{"description":"Service is up."}},"summary":"Service health","tags":["System"]}},"/v2/time":{"get":{"operationId":"get_server_time","parameters":[],"responses":{"200":{"description":"Current server time."}},"summary":"Server time for request signing and clock synchronization","tags":["System"]}},"/v2/api_keys":{"get":{"operationId":"list_api_keys","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"List your API keys","tags":["API Keys"]},"post":{"operationId":"create_api_key","parameters":[{"name":"x-2fa-code","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Create an API key (2FA)","tags":["API Keys"]}},"/v2/api_keys/{id}":{"get":{"operationId":"get_api_key","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Get one API key","tags":["API Keys"]},"patch":{"operationId":"update_api_key","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-2fa-code","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateApiKeyDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Update an API key (2FA)","tags":["API Keys"]},"delete":{"operationId":"revoke_api_key","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-2fa-code","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Revoke an API key (2FA)","tags":["API Keys"]}},"/v2/api_keys/{id}/rotate":{"post":{"operationId":"rotate_api_key","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-2fa-code","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Rotate an API key secret (2FA)","tags":["API Keys"]}},"/v2/api_keys/{id}/signing_keys":{"post":{"operationId":"add_signing_key","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-2fa-code","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddSigningKeyDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Add a signing key (2FA)","tags":["API Keys"]}},"/v2/api_keys/{id}/signing_keys/{signingKeyId}":{"delete":{"operationId":"revoke_signing_key","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"signingKeyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"x-2fa-code","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Revoke a signing key (2FA)","tags":["API Keys"]}},"/v2/currencies":{"get":{"operationId":"list_currencies","parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"List supported currencies","tags":["Currencies"]}},"/v2/currencies/{currencyId}":{"get":{"operationId":"get_currency","parameters":[{"name":"currencyId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Get a supported currency by id","tags":["Currencies"]}},"/v2/markets":{"get":{"operationId":"list_markets","parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"List supported markets","tags":["Markets"]}},"/v2/markets/{marketId}":{"get":{"operationId":"get_market","parameters":[{"name":"marketId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Get a supported market by id","tags":["Markets"]}},"/v2/account":{"get":{"operationId":"get_account","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Get the account for the authenticated key","tags":["Account"]}},"/v2/balances":{"get":{"operationId":"list_balances","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BalanceResource"}}}}}},"security":[{"bearerKey":[]}],"summary":"List the account currency balances","tags":["Balances"]}},"/v2/balances/{currencyId}/history":{"get":{"operationId":"get_balance_history","parameters":[{"name":"currencyId","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}},{"name":"startDate","required":false,"in":"query","description":"ISO-8601 start date. Defaults to the first movement.","schema":{"type":"string"}},{"name":"endDate","required":false,"in":"query","description":"ISO-8601 end date. Defaults to now.","schema":{"type":"string"}},{"name":"granularity","required":false,"in":"query","schema":{"default":"day","enum":["day","week","month"],"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Historical balances for a currency","tags":["Balances"]}},"/v2/ledger_movements":{"get":{"operationId":"list_ledger_movements","parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}},{"name":"currencyId","required":true,"in":"query","description":"Currency to list movements for.","schema":{"example":"BTC","type":"string"}},{"name":"type","required":false,"in":"query","description":"Filter by movement type.","schema":{"example":"DEPOSIT","type":"string"}},{"name":"startDate","required":false,"in":"query","description":"ISO-8601 start date.","schema":{"type":"string"}},{"name":"endDate","required":false,"in":"query","description":"ISO-8601 end date.","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Ledger movements for a currency","tags":["Ledger Movements"]}},"/v2/contacts":{"get":{"operationId":"list_contacts","parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}},{"name":"type","required":false,"in":"query","description":"Filter by contact type.","schema":{"example":"EXTERNAL_CRYPTO","type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"List contacts","tags":["Contacts"]}},"/v2/contacts/{contactId}":{"get":{"operationId":"get_contact","parameters":[{"name":"contactId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Get a contact by id","tags":["Contacts"]},"patch":{"operationId":"update_contact","parameters":[{"name":"contactId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContactReferenceDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Edit a contact's reference/alias","tags":["Contacts"]}},"/v2/conversions":{"get":{"operationId":"list_conversions","parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}},{"name":"qtyCurrencyId","required":false,"in":"query","description":"Currency the quantity is denominated in.","schema":{"example":"BTC","type":"string"}},{"name":"baseCurrencyId","required":false,"in":"query","schema":{"example":"BTC","type":"string"}},{"name":"quoteCurrencyId","required":false,"in":"query","schema":{"example":"CLP","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"example":"COMPLETED","type":"string"}},{"name":"subType","required":false,"in":"query","schema":{"type":"string"}},{"name":"clOrdId","required":false,"in":"query","description":"Client order id.","schema":{"type":"string"}},{"name":"assetFormat","required":false,"in":"query","schema":{"enum":["base","rebased"],"type":"string"}},{"name":"startDate","required":false,"in":"query","description":"ISO-8601 start date.","schema":{"type":"string"}},{"name":"endDate","required":false,"in":"query","description":"ISO-8601 end date.","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"List conversions","tags":["Conversions"]}},"/v2/conversions/{transactionId}":{"get":{"operationId":"get_conversion","parameters":[{"name":"transactionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConversionResource"}}}}}},"security":[{"bearerKey":[]}],"summary":"Get a conversion by transaction id (both legs)","tags":["Conversions"]}},"/v2/conversion_orders":{"get":{"operationId":"list_conversion_orders","parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}},{"name":"status","required":false,"in":"query","schema":{"example":"FILLED","type":"string"}},{"name":"currencyBase","required":false,"in":"query","schema":{"example":"BTC","type":"string"}},{"name":"currencyQuote","required":false,"in":"query","schema":{"example":"CLP","type":"string"}},{"name":"market","required":false,"in":"query","schema":{"example":"BTC-CLP","type":"string"}},{"name":"side","required":false,"in":"query","schema":{"example":"BUY","type":"string"}},{"name":"assetFormat","required":false,"in":"query","schema":{"enum":["base","rebased"],"type":"string"}},{"name":"startDate","required":false,"in":"query","description":"ISO-8601 start date.","schema":{"type":"string"}},{"name":"endDate","required":false,"in":"query","description":"ISO-8601 end date.","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"List conversion orders","tags":["Conversions"]}},"/v2/quotes":{"post":{"description":"Returns a short-lived quote; confirm it via POST /v2/conversions (a signed request). Quote creation does not move money, so a bearer key is sufficient.","operationId":"create_quote","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateQuoteDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteResource"}}}}},"security":[{"bearerKey":[]}],"summary":"Create a conversion quote","tags":["Conversions"]}},"/v2/deposits":{"get":{"operationId":"list_deposits","parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}},{"name":"currencyId","required":false,"in":"query","schema":{"example":"BTC","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"example":"COMPLETED","type":"string"}},{"name":"subType","required":false,"in":"query","schema":{"example":"EXTERNAL_CRYPTO","type":"string"}},{"name":"startDate","required":false,"in":"query","description":"ISO-8601 start date.","schema":{"type":"string"}},{"name":"endDate","required":false,"in":"query","description":"ISO-8601 end date.","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"List deposits","tags":["Deposits"]}},"/v2/deposits/{transactionId}":{"get":{"operationId":"get_deposit","parameters":[{"name":"transactionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Get a deposit by transaction id","tags":["Deposits"]}},"/v2/withdrawals":{"get":{"operationId":"list_withdrawals","parameters":[{"name":"page","required":false,"in":"query","schema":{"minimum":1,"default":1,"type":"integer"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":25,"type":"integer"}},{"name":"currencyId","required":false,"in":"query","schema":{"example":"BTC","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"example":"COMPLETED","type":"string"}},{"name":"subType","required":false,"in":"query","schema":{"example":"EXTERNAL_CRYPTO","type":"string"}},{"name":"assetFormat","required":false,"in":"query","schema":{"enum":["base","rebased"],"type":"string"}},{"name":"startDate","required":false,"in":"query","description":"ISO-8601 start date.","schema":{"type":"string"}},{"name":"endDate","required":false,"in":"query","description":"ISO-8601 end date.","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"List withdrawals","tags":["Withdrawals"]},"post":{"description":"Money movement — requires a Tier-2 signed request (X-API-Key header + signed Authorization JWT), not a bare bearer key.","operationId":"create_withdrawal","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWithdrawalDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawalResource"}}}}},"security":[{"bearerKey":[]},{"signedRequestJwt":[]},{"apiKeyId":[]}],"summary":"Create a withdrawal","tags":["Withdrawals"]}},"/v2/withdrawals/{transactionId}":{"get":{"operationId":"get_withdrawal","parameters":[{"name":"transactionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearerKey":[]}],"summary":"Get a withdrawal by transaction id","tags":["Withdrawals"]}}},"info":{"title":"Skipo API","description":"Skipo Public API v2.\n\n## Authentication\nTwo tiers:\n- **Bearer key** — `Authorization: Bearer skp_live_...` for reads and non-sensitive writes.\n- **Signed request** — `X-API-Key: <keyId>` + a per-request Ed25519-signed JWT in\n  `Authorization: Bearer <jwt>` for money movement. See the Authentication guide.\n\n## Rate limits\nEnforced per-account **and** per-key by tier. Every response carries\n`RateLimit` / `RateLimit-Policy` (+ legacy `X-RateLimit-*`); a 429 returns a\nproblem+json body with `Retry-After`.\n\n## Errors\nEvery error is RFC 9457 `application/problem+json` with a stable `type`\n(`https://docs.skipo.com/errors/{code}`), a machine `code`, and a `retryable`\nflag — see the **Problem** schema.\n\n## Pagination\nList endpoints take `page`/`limit` and return `{ data, pagination }`\n(cursor-ready via `pagination.nextCursor`).","version":"2.0.0","contact":{"name":"Skipo","url":"https://docs.skipo.com","email":"dev@skipo.com"},"license":{"name":"Proprietary","url":"https://skipo.com/terms"},"termsOfService":"https://skipo.com/terms"},"tags":[{"name":"System","description":"Health, server time, and the OpenAPI spec"},{"name":"API Keys","description":"Self-service API-key management"},{"name":"Account","description":"The authenticated account"},{"name":"Balances","description":"Current balances and historical balances"},{"name":"Ledger Movements","description":"Ledger movement history"},{"name":"Currencies","description":"Supported currencies"},{"name":"Markets","description":"Supported markets"},{"name":"Contacts","description":"Withdrawal contacts (read + reference edit)"},{"name":"Deposits","description":"Deposit history"},{"name":"Withdrawals","description":"Withdrawal history"}],"servers":[{"url":"https://api.skipo.com","description":"Production"}],"components":{"securitySchemes":{"bearerKey":{"scheme":"bearer","bearerFormat":"skp_live_/skp_test_ secret key","type":"http","description":"Scoped secret key. Send as `Authorization: Bearer skp_live_...`."},"apiKeyId":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key id accompanying a signed-request JWT (Tier 2)."},"signedRequestJwt":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"Per-request JWT signed with your Ed25519 key (alg EdDSA; RS256 fallback). Claims: uri, nonce, iat, exp<=iat+60s, sub, bodyHash (SHA-256 of the raw body)."}},"schemas":{"CreateApiKeyDto":{"type":"object","properties":{"name":{"type":"string","maxLength":100,"description":"Human-readable label for the key."},"env":{"type":"string","enum":["live","test"],"default":"live"},"scopes":{"type":"array","description":"Scopes granted to the key.","items":{"type":"string","enum":["market_data:read","accounts:read","transfers:read","transfers:write","conversions:read","conversions:write","contacts:read","contacts:write","webhooks:read","webhooks:manage","keys:manage"]}},"tier":{"type":"string","enum":["basic","standard","premium","internal"],"description":"Rate-limit tier (defaults to standard)."},"expiresAt":{"type":"string","description":"ISO-8601 expiry; omit for no expiry."},"ipAllowlist":{"description":"Optional IP allowlist (CIDRs).","type":"array","items":{"type":"string"}},"rateLimitOverrides":{"type":"object","description":"Per-key rate-limit overrides (rps, burst, dailyQuota, endpoints)."}},"required":["name","scopes"]},"UpdateApiKeyDto":{"type":"object","properties":{"name":{"type":"string","maxLength":100,"description":"Human-readable label for the key."},"scopes":{"type":"array","description":"Scopes granted to the key.","items":{"type":"string","enum":["market_data:read","accounts:read","transfers:read","transfers:write","conversions:read","conversions:write","contacts:read","contacts:write","webhooks:read","webhooks:manage","keys:manage"]}},"tier":{"type":"string","enum":["basic","standard","premium","internal"],"description":"Rate-limit tier (defaults to standard)."},"expiresAt":{"type":"string","description":"ISO-8601 expiry; omit for no expiry."},"ipAllowlist":{"description":"Optional IP allowlist (CIDRs).","type":"array","items":{"type":"string"}},"rateLimitOverrides":{"type":"object","description":"Per-key rate-limit overrides (rps, burst, dailyQuota, endpoints)."}}},"AddSigningKeyDto":{"type":"object","properties":{"alg":{"type":"string","enum":["EdDSA","RS256"],"description":"Signature algorithm (EdDSA preferred)."},"publicKey":{"type":"string","description":"Public key in SPKI PEM format (you keep the private key)."}},"required":["alg","publicKey"]},"BalanceResource":{"type":"object","properties":{"currencyId":{"type":"string","example":"BTC"},"balance":{"type":"string","example":"500"},"balanceFrozen":{"type":"string","example":"0"},"balancePending":{"type":"string","example":"100"},"type":{"type":"string","example":"CRYPTO"},"balancePrefCurrency":{"type":"string","example":"500"},"balanceUSD":{"type":"string","example":"0.62"},"balanceCapacityTotal":{"type":"string"},"balanceCapacityAvailable":{"type":"string"},"balanceCapacitySpent":{"type":"string"}},"required":["currencyId","balance","balanceFrozen","balancePending","type","balancePrefCurrency","balanceUSD"]},"UpdateContactReferenceDto":{"type":"object","properties":{"reference":{"type":"string","description":"New reference/alias label for the contact (does not change the destination)."}},"required":["reference"]},"ConversionResource":{"type":"object","properties":{"transactionId":{"type":"string"},"type":{"type":"string","example":"CONVERSION"},"subType":{"type":"string"},"clientOrderId":{"type":"object","nullable":true,"description":"Client order id, if the conversion came from a quote."},"side":{"type":"string","example":"BUY"},"market":{"type":"string","example":"BTC-CLP"},"baseCurrencyId":{"type":"string"},"quoteCurrencyId":{"type":"string"},"quantity":{"type":"string"},"quantityCurrencyId":{"type":"string","description":"Currency the quantity is denominated in."},"rate":{"type":"string"},"amount":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"}},"required":["transactionId","type","subType","clientOrderId","side","market","baseCurrencyId","quoteCurrencyId","quantity","quantityCurrencyId","rate","amount","status","createdAt"]},"CreateQuoteDto":{"type":"object","properties":{"baseCurrencyId":{"type":"string","example":"BTC"},"quoteCurrencyId":{"type":"string","example":"CLP"},"qtyCurrencyId":{"type":"string","example":"BTC","description":"Currency the quantity is denominated in."},"side":{"type":"string","enum":["BUY","SELL"]},"quantity":{"type":"string","example":"0.5"}},"required":["baseCurrencyId","quoteCurrencyId","qtyCurrencyId","side","quantity"]},"QuoteResource":{"type":"object","properties":{"clientOrderId":{"type":"string","description":"Client order id — pass this to POST /v2/conversions to confirm the quote."},"orderId":{"type":"string"},"rate":{"type":"string","description":"Quoted exchange rate."},"baseQuantity":{"type":"string"},"quoteQuantity":{"type":"string"},"quotedAt":{"type":"string","description":"Server time the quote was produced (quotes are short-lived)."}},"required":["clientOrderId","orderId","rate","baseQuantity","quoteQuantity","quotedAt"]},"CreateWithdrawalDto":{"type":"object","properties":{"currencyId":{"type":"string","example":"BTC","description":"Currency to withdraw."},"quantity":{"type":"string","example":"0.05","description":"Amount to withdraw, as a decimal string."},"contactId":{"type":"string","description":"Destination contact id (a whitelisted address/account)."},"contactReference":{"type":"string","description":"Destination contact reference/alias."}},"required":["currencyId","quantity"]},"WithdrawalResource":{"type":"object","properties":{"transactionId":{"type":"string"},"type":{"type":"string","example":"WITHDRAWAL"},"subType":{"type":"string","enum":["INTERNAL","EXTERNAL_CRYPTO","EXTERNAL_FIAT_BANK","EXTERNAL_FIAT_REDPAY","NETWORK_FEE","TRANSFER_FEE"]},"currencyId":{"type":"string","example":"BTC"},"quantity":{"type":"string"},"fee":{"type":"string"},"total":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"},"withdrawalData":{"type":"object","description":"Sub-type-specific details."}},"required":["transactionId","type","subType","currencyId","quantity","fee","total","status","createdAt","withdrawalData"]},"Problem":{"type":"object","properties":{"type":{"type":"string","format":"uri","description":"Stable problem-type URI. Resolves to docs for this error.","example":"https://docs.skipo.com/errors/rate_limited"},"title":{"type":"string","description":"Short, human-readable summary (stable, English).","example":"Rate limit exceeded"},"status":{"type":"number","description":"HTTP status code.","example":429},"code":{"type":"string","description":"Stable machine-readable error code (equals the last path segment of `type`).","example":"rate_limited"},"retryable":{"type":"boolean","description":"Whether retrying the identical request may succeed.","example":true},"detail":{"type":"string","description":"Human-readable, possibly localized detail."},"instance":{"type":"string","description":"The request path that produced the error."},"traceId":{"type":"string","description":"Trace id — joins BigQuery api_request and Cloud Logging."}},"required":["type","title","status","code","retryable"]}}},"externalDocs":{"description":"Skipo API documentation","url":"https://docs.skipo.com"}}