A UnaryCallable is an immutable object which is capable of making RPC calls to non-streaming API
methods.
In typical usage, the request to send to the remote service will not be bound to the
UnaryCallable, but instead is provided at call time, which allows for a UnaryCallable to be saved
and used indefinitely.
There are two styles of calls that can be made through a UnaryCallable: synchronous and
asynchronous.
RequestTyperequest=RequestType.newBuilder().build();UnaryCallable<RequestType,ResponseType>unaryCallable=api.doSomethingCallable();ApiFuture<ResponseType>resultFuture=unaryCallable.futureCall();// do other work// ...ResponseTyperesponse=resultFuture.get();
It is considered advanced usage for a user to create a UnaryCallable themselves. This class is
intended to be created by a generated client class, and configured by instances of
UnaryCallSettings.Builder which are exposed through the client settings class.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThe latest version available for \u003ccode\u003eUnaryCallable\u003c/code\u003e is 2.63.1, with a history of versions dating back to 2.7.1.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eUnaryCallable\u003c/code\u003e is an immutable Java object for making RPC calls to non-streaming API methods, where the request is provided at call time.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eUnaryCallable\u003c/code\u003e supports both synchronous calls, using \u003ccode\u003ecall()\u003c/code\u003e, and asynchronous calls, using \u003ccode\u003efutureCall()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eWhile it is possible for a user to create a \u003ccode\u003eUnaryCallable\u003c/code\u003e, this class is intended to be generated by a client class and configured by \u003ccode\u003eUnaryCallSettings.Builder\u003c/code\u003e instances through the client settings class.\u003c/p\u003e\n"],["\u003cp\u003eYou can set a default \u003ccode\u003eApiCallContext\u003c/code\u003e for \u003ccode\u003eUnaryCallable\u003c/code\u003e instances with the \u003ccode\u003ewithDefaultCallContext()\u003c/code\u003e method, which is used when a context is not provided in individual calls.\u003c/p\u003e\n"]]],[],null,["# Class UnaryCallable<RequestT,ResponseT> (2.69.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.69.0 (latest)](/java/docs/reference/gax/latest/com.google.api.gax.rpc.UnaryCallable)\n- [2.68.2](/java/docs/reference/gax/2.68.2/com.google.api.gax.rpc.UnaryCallable)\n- [2.67.0](/java/docs/reference/gax/2.67.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.66.0](/java/docs/reference/gax/2.66.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.65.0](/java/docs/reference/gax/2.65.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.63.1](/java/docs/reference/gax/2.63.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.62.0](/java/docs/reference/gax/2.62.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.61.0](/java/docs/reference/gax/2.61.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.60.0](/java/docs/reference/gax/2.60.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.59.1](/java/docs/reference/gax/2.59.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.58.0](/java/docs/reference/gax/2.58.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.57.0](/java/docs/reference/gax/2.57.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.55.0](/java/docs/reference/gax/2.55.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.54.1](/java/docs/reference/gax/2.54.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.53.0](/java/docs/reference/gax/2.53.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.52.0](/java/docs/reference/gax/2.52.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.51.0](/java/docs/reference/gax/2.51.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.50.0](/java/docs/reference/gax/2.50.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.49.0](/java/docs/reference/gax/2.49.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.48.1](/java/docs/reference/gax/2.48.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.47.0](/java/docs/reference/gax/2.47.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.46.1](/java/docs/reference/gax/2.46.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.45.0](/java/docs/reference/gax/2.45.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.43.0](/java/docs/reference/gax/2.43.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.42.0](/java/docs/reference/gax/2.42.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.41.0](/java/docs/reference/gax/2.41.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.39.0](/java/docs/reference/gax/2.39.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.38.0](/java/docs/reference/gax/2.38.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.37.0](/java/docs/reference/gax/2.37.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.36.0](/java/docs/reference/gax/2.36.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.35.0](/java/docs/reference/gax/2.35.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.34.1](/java/docs/reference/gax/2.34.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.33.0](/java/docs/reference/gax/2.33.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.32.1](/java/docs/reference/gax/2.32.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.31.1](/java/docs/reference/gax/2.31.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.30.1](/java/docs/reference/gax/2.30.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.24.0](/java/docs/reference/gax/2.24.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.23.3](/java/docs/reference/gax/2.23.3/com.google.api.gax.rpc.UnaryCallable)\n- [2.22.0](/java/docs/reference/gax/2.22.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.21.0](/java/docs/reference/gax/2.21.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.20.1](/java/docs/reference/gax/2.20.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.19.6](/java/docs/reference/gax/2.19.6/com.google.api.gax.rpc.UnaryCallable)\n- [2.18.7](/java/docs/reference/gax/2.18.7/com.google.api.gax.rpc.UnaryCallable)\n- [2.17.0](/java/docs/reference/gax/2.17.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.16.0](/java/docs/reference/gax/2.16.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.15.0](/java/docs/reference/gax/2.15.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.14.0](/java/docs/reference/gax/2.14.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.13.0](/java/docs/reference/gax/2.13.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.12.2](/java/docs/reference/gax/2.12.2/com.google.api.gax.rpc.UnaryCallable)\n- [2.11.0](/java/docs/reference/gax/2.11.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.10.0](/java/docs/reference/gax/2.10.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.9.0](/java/docs/reference/gax/2.9.0/com.google.api.gax.rpc.UnaryCallable)\n- [2.8.1](/java/docs/reference/gax/2.8.1/com.google.api.gax.rpc.UnaryCallable)\n- [2.7.1](/java/docs/reference/gax/2.7.1/com.google.api.gax.rpc.UnaryCallable) \n\n public abstract class UnaryCallable\u003cRequestT,ResponseT\u003e\n\nA UnaryCallable is an immutable object which is capable of making RPC calls to non-streaming API\nmethods.\n\nIn typical usage, the request to send to the remote service will not be bound to the\nUnaryCallable, but instead is provided at call time, which allows for a UnaryCallable to be saved\nand used indefinitely.\n\nThere are two styles of calls that can be made through a UnaryCallable: synchronous and\nasynchronous.\n\nSynchronous example: \n\n\n RequestType request = RequestType.newBuilder().build();\n UnaryCallable\u003cRequestType, ResponseType\u003e unaryCallable = api.doSomethingCallable();\n ResponseType response = unaryCallable.call();\n \nAsynchronous example: \n\n\n RequestType request = RequestType.newBuilder().build();\n UnaryCallable\u003cRequestType, ResponseType\u003e unaryCallable = api.doSomethingCallable();\n ApiFuture\u003cResponseType\u003e resultFuture = unaryCallable.futureCall();\n // do other work\n // ...\n ResponseType response = resultFuture.get();\n \nIt is considered advanced usage for a user to create a UnaryCallable themselves. This class is\nintended to be created by a generated client class, and configured by instances of\nUnaryCallSettings.Builder which are exposed through the client settings class. \n\nInheritance\n-----------\n\n[java.lang.Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e UnaryCallable\\\u003cRequestT,ResponseT\\\u003e \n\nInherited Members\n-----------------\n\n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nConstructors\n------------\n\n### UnaryCallable()\n\n protected UnaryCallable()\n\nMethods\n-------\n\n### call(RequestT request)\n\n public ResponseT call(RequestT request)\n\nSame as [#call(Object, ApiCallContext)](/java/docs/reference/gax/latest/com.google.api.gax.rpc.UnaryCallable#com_google_api_gax_rpc_UnaryCallable_call_), with a null context.\n\n### call(RequestT request, ApiCallContext context)\n\n public ResponseT call(RequestT request, ApiCallContext context)\n\nPerform a call synchronously.\n\n### futureCall(RequestT request)\n\n public ApiFuture\u003cResponseT\u003e futureCall(RequestT request)\n\nSame as [#futureCall(Object, ApiCallContext)](/java/docs/reference/gax/latest/com.google.api.gax.rpc.UnaryCallable#com_google_api_gax_rpc_UnaryCallable_futureCall_), with a null context.\n\n### futureCall(RequestT request, ApiCallContext context)\n\n public abstract ApiFuture\u003cResponseT\u003e futureCall(RequestT request, ApiCallContext context)\n\nPerform a call asynchronously.\n\n### withDefaultCallContext(ApiCallContext defaultCallContext)\n\n public UnaryCallable\u003cRequestT,ResponseT\u003e withDefaultCallContext(ApiCallContext defaultCallContext)\n\nReturns a new `UnaryCallable` with an [ApiCallContext](/java/docs/reference/gax/latest/com.google.api.gax.rpc.ApiCallContext) that is used as a default\nwhen none is supplied in individual calls."]]