When installing the fabric api on a server and then join with a client that does not use the fabric api mod, the ID's of the blocks and items are shifted by -1, example a bow is a apple.

Hmm, can you try without the fabric registry sync mod (remove its reference from fabric.mod.json in the api mod jar)
@liach that fixed the problem
I had the same issue, and I can confirm this fixes the issue.
fabric-registry-sync does not freeze the IDs for vanilla registry entries - this is one of those TODOs I forgot to get around to, and this should be implemented ASAP (Carpet keeps running into it, among others).
Block Ids dont need to be saved, only sycned. I started looking into fixing all the issues here: https://github.com/FabricMC/fabric/pull/525
Including not doing anything with registrys that havent been modified.
Duplicate of #122