What is the instruction format for an accumulator machine?
Fixed format instruction means that all instructions have the same size of $k$ bits. You ask to learn what $k$ is.


As you say, the opcode takes 7 bits. So $k \ge 7$
In order to support memory operations (such as add mem or load mem etc) we need to be able to give an address (=mem). If the dressing mode is direct, and given there are 24 bits address, we have that $k \ge 7+24$.
But the description of your CPU suggests that there is other addressing modes. Specifically, there is another register, index register that allows accessing the memory of [X+mem] where X is the content of the indexing register and $mem$ is the 24 bits of address we already counted for. Now, do we need to state X in the instruction itself? - No. we just need to be able to mention the addressing mode is different = a different opcode.
what about load immeidate (i.e., loading an immediate value directly into the accumulator)?

I don't know. 

Your description doesn't give any information or constraints on this issue and there are many different ways to implement the same action. In particular, one can think of "load-byte" instruction which will update the (LSByte of the) accumulator with some fixed value. The current $k$ is enough for such instruction as long as the immediate value is at most 24bits.  If you wish to have a way to update the entire 32bits of the accumulator using a single instruction you will have to increase $k$ to support this operation as well.


So unless there are other demands or clarifications to the description you gave, we get that $k \ge 31$.