We strongly recommend that you use our
Cloud Bigtable client libraries instead of writing your
own. Our client libraries include many important features that can be
challenging to implement correctly, such as authentication and retries.
Supported languages include C#, C++, Java, Go, Node.js, Python, PHP, and Ruby.
You should write your own client library only when you use a programming
language that is not supported.
gRPC API
You can use the .proto service definition for Bigtable to generate
your own gRPC client library in any language that gRPC supports. Use these
resources to generate a client library:
[[["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-08-25 UTC."],[[["\u003cp\u003eCloud Bigtable offers both REST/HTTP and gRPC interfaces for accessing its services.\u003c/p\u003e\n"],["\u003cp\u003eUsing the provided Cloud Bigtable client libraries is strongly recommended over creating custom libraries due to features like authentication and retries, but they support languages including C#, C++, Java, Go, Node.js, Python, PHP, and Ruby.\u003c/p\u003e\n"],["\u003cp\u003eCustom gRPC client libraries can be generated for any language supported by gRPC using the provided service definitions for the Data API, Instance Admin API, and Table Admin API.\u003c/p\u003e\n"],["\u003cp\u003eThe REST interface is only available for the Admin API and not the Data API, with resources provided to help create your own clients using this interface.\u003c/p\u003e\n"],["\u003cp\u003eWhen using the REST interface, ensure you are encoding and decoding Bigtable resource names containing special characters when sending them through HTTP requests.\u003c/p\u003e\n"]]],[],null,["# Service APIs overview\n=====================\n\nBigtable provides REST/HTTP and [gRPC](https://grpc.io) interfaces.\n\n**We strongly recommend that you use our\n[Cloud Bigtable client libraries](/bigtable/docs/reference/libraries) instead of writing your\nown**. Our client libraries include many important features that can be\nchallenging to implement correctly, such as authentication and retries.\n\nIf the [Cloud Bigtable client library](/bigtable/docs/reference/libraries) for your preferred\nlanguage does not meet your needs, open a [GitHub issue](/bigtable/docs/reference/libraries#additional_resources)\nfor it instead of writing your own client library.\n\nSupported languages include C#, C++, Java, Go, Node.js, Python, PHP, and Ruby.\nYou should write your own client library only when you use a programming\nlanguage that is not supported.\n\ngRPC API\n--------\n\nYou can use the .proto service definition for Bigtable to generate\nyour own gRPC client library in any language that gRPC supports. Use these\nresources to generate a client library:\n\n- [Cloud Bigtable Data API service definition](https://github.com/googleapis/googleapis/blob/master/google/bigtable/v2/bigtable.proto)\n- [Cloud Bigtable Instance Admin API service\n definition](https://github.com/googleapis/googleapis/blob/master/google/bigtable/admin/v2/bigtable_instance_admin.proto)\n- [Cloud Bigtable Table Admin API service\n definition](https://github.com/googleapis/googleapis/blob/master/google/bigtable/admin/v2/bigtable_table_admin.proto)\n- [gRPC documentation](https://grpc.io/docs/): Everything you need to generate and use your own gRPC client code\n- [RPC Data API reference](/bigtable/docs/reference/data/rpc): Language-independent overview of the RPC surface of Cloud Bigtable API (the Data API)\n- [RPC Admin API reference](/bigtable/docs/reference/admin/rpc): Language-independent overview of the RPC surface of the Cloud Bigtable Admin API\n\nREST/HTTP API\n-------------\n\nBigtable provides a REST interface for the Admin API. We don't\nrecommend using REST to access the Data API.\n\nThere are many different ways to access the REST interface for\nBigtable. To create your own clients, use the following resources:\n\n- [REST Admin API reference](/bigtable/docs/reference/admin/rest)\n- [Guidelines for working with Google HTTP APIs](/apis/docs/http)\n- [API Discovery Service](https://developers.google.com/discovery/v1/getting_started): Exposes machine-readable metadata about the REST/HTTP API surface to help you create client libraries, tools, and plugins\n- [Client samples](https://developers.google.com/discovery/libraries): Built with REST/HTTP APIs and the Google API Discovery Service.\n\n| **Note:** Bigtable resource names can contain special characters. Be sure to [URI-encode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI) and [URI-decode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI) these characters when you send them over HTTP.\n\nWhat's next\n-----------\n\n- Learn about the [client libraries for Cloud Bigtable](/bigtable/docs/reference/libraries).\n- Complete a [quickstart for creating a gRPC client library](https://grpc.io/docs/quickstart/).\n- Read reference documentation for the Cloud Bigtable [RPC Data\n API](/bigtable/docs/reference/data/rpc) and [RPC Admin API](/bigtable/docs/reference/admin/rpc).\n- Read reference documentation for the [REST Admin API](/bigtable/docs/reference/admin/rest)."]]