Both services are served from a single endpoint at , in three transports. The JSON transport is the same gRPC service behind a transcoder, not a second API: identical methods, identical field names, identical status codes. Read methods are GETs with query or path parameters, mutating methods are POSTs with a JSON body, and revocation is a DELETE. The routes are in the API reference.
Errors arrive as the gRPC status mapped onto HTTP, with the code in the body:

Services

Generating a client

The protobuf definition is the contract. Fetch it from and generate stubs for your language.
The SDK ships generated types and a configured transport:
To generate your own instead, use buf with protoc-gen-es and Connect’s createGrpcWebTransport in browsers or createGrpcTransport on Node.

Calling it without writing code

Reflection means any gRPC client can discover the schema and call the API with no local setup.
There is no sandbox. Every one of these hits mainnet: quotes are real quotes, and partner methods really create keys, revoke them, and mark referral orders claimed.

Field naming

Protobuf field names are snake_case on the wire and in grpcurl payloads. Most generated clients expose them as camelCase, which is what the TypeScript examples in these docs use. Both refer to the same field.

Value conventions

Amounts are strings because they exceed the precision of a JSON number. Parse them into a big integer type, not a float, at every boundary.

Health

The health service reports readiness, which flips to not-serving when the API cannot reach its dependencies. Use it for load balancer checks rather than polling GetChains.