APIs make strategies reproducible and testable, but they move every safeguard from the platform into your code. There is no confirmation dialog, no greyed-out button, and no human pause between an intention and 500 orders.
Minimum discipline: idempotent order submission using a unique client-order-id, explicit handling of rejects and partial fills, reconciliation of positions on reconnect, and a kill-switch that can flatten and disable everything.
Example: a bot retries a timed-out order without an idempotency key. The first request had actually succeeded, so the retry doubles the position; a reconnect loop repeats it four more times. Intended exposure of $10,000 becomes $60,000 before a human notices.
Related: fix-protocol, client-order-id, kill-switch, pre-trade-risk-check