I believe it’s a problem of the JS Candid decoder that does not handle subtyping correctly; see How to query blocks using the archive canister interface?.
DFX has no issues with the call:
dfx canister --network ic call qjdve-lqaaa-aaaaa-aaaeq-cai get_blocks '(record { start = 582200:nat64; length = 1:nat64})'
(
variant {
17_724 = record {
2_817_142_406 = vec {
record {
1_266_835_934 = record {
1_213_809_850 = 12_484_270_477_416_014_727 : nat64;
2_688_582_695 = variant {
3_021_957_963 = record {
25_979 = blob "\ef\a0\15D\f5\09\c5m\d8TI\ed\f28\12D\a4\8f\ad\1e\deQ\83\83b)\c0\0a\b0\0dR\df";
5_094_982 = record { 5_035_232 = 10_000 : nat64 };
1_136_829_802 = blob "sM\ed\99\f6\c8o\c6w\89\b9\b5\d7\0cU9L\8e\ef\ff\91\b5\10\e6\ba\0e\80\9e8/\88\05";
3_573_748_184 = record { 5_035_232 = 499_980_000 : nat64 };
}
};
3_258_775_938 = record {
268_680_022 = 1_631_323_189_974_350_673 : nat64;
};
};
2_781_795_542 = record {
268_680_022 = 1_631_323_191_460_723_923 : nat64;
};
4_121_316_931 = opt blob "F\b7\db8\1bO\1fF\df\ff+\dbfS\a7\e6\f1\97*\f8\f1\a6\c4\9bd\ef\88\ca(\83\daZ";
};
};
}
},
)