The sentence is ambiguous in that it can be parsed to mean either one, but it's clear the intent is "talk to the endpoints".
Here's a simpler example of this structure, also ambiguous, with two ways of parsing it:
Nev gave his essay [to a friend] [to proofread].
Nev gave his essay [to [a friend to proofread]].
In the first, Nev gave the essay to his friend, so the friend could proofread it. This is hopefully pretty clear and straightforward.
In the second, Nev has "a friend to proofread", and he gave his essay to that friend. This meaning is quite odd because we don't proofread friends. Also the sentence no longer indicates why he gave the friend his essay.
Your sentence has the same structure, but the verb "talk to" could apply both to the endpoint and the client. More clearly written, this is what the intent was:
On the server, we can provide different endpoints to clients. The clients can talk to the endpoints to get or save various pieces of data.
You could also parse it this way:
There are clients to talk to, and on the server, we can provide different endpoints to those clients in order (for someone??) to get or save various pieces of data.
But in the API world, it doesn't make sense to have a set of "clients to talk to" as distinct from other "clients not to talk to" or "clients to do other things with than talk". Also, this parsing doesn't indicate who would get or save the data.