Koha's SIP server was engineered to allow for item level holds down to and including C4::SIP::ILS::add_hold which accepts both an item id ( in the form of a barcode, SIP field AJ ), or a title id ( i.e. biblionumber, SIP field AJ ). add_hold is passed the barcode, *or* the biblionumber if a barcode was not passed in. All code after this point presumes that the value passed was a barcode. This should be corrected so that record level holds can be placed via SIP in Koha.
This sounds similar to your discussion with Nick on bug 26461, can you check if it's a duplicate maybe?
*** This bug has been marked as a duplicate of bug 26461 ***