Храните авторизацию вне исходного кода

Используйте native fetch в доверенном Node/server runtime. Браузер должен вызывать ваш backend, а не ChainsFlow с секретным токеном.

Используйте ID, выданный API

Создайте портфель через POST /api/v1/portfolios и сохраните возвращённый portfolioId в своём backend. Границу владения определяет API-ключ.

Обрабатывайте контракт ответа

Проверяйте HTTP status до декодирования success data. Ошибки имеют application/problem+json, а платные успехи — заголовки стоимости и остатка кредитов.