HTTP and gRPC
The API speaks plain HTTP with JSON and gRPC on the same endpoint. Both offer the same methods and the same authentication.
| HTTP | gRPC | |
|---|---|---|
| Endpoint | https://api.enum.co | api.enum.co:443 |
| Good for | Shell scripts, languages without a gRPC library | Typed clients in any language |
| Used by | TypeScript client | Go client, enumctl |
Send a POST to /<service>/<method> with the request as a JSON body:
curl -X POST https://api.enum.co/enum.api.v1.DnsService/ListZones \ -H "Authorization: Bearer $ENUM_TOKEN" \ -H "Content-Type: application/json" \ -d '{"projectId": "proj-01kmyy3t719crcnrrvk1mgyjd0"}'- Field names are camelCase.
- Enum values are strings, such as
"IMPORT_MODE_MERGE". - Timestamps are RFC 3339 strings, such as
"2027-01-31T00:00:00Z".
Errors come back as JSON with a matching HTTP status:
{"code": "unauthenticated", "message": "authentication failed"}The server has reflection turned on, so tools like grpcurl work without proto files.
List all services:
grpcurl api.enum.co:443 listShow a method and its request message:
grpcurl api.enum.co:443 describe enum.api.v1.DnsService.ListZonesgrpcurl api.enum.co:443 describe enum.api.v1.ListZonesRequestCall a method:
grpcurl \ -H "Authorization: Bearer $ENUM_TOKEN" \ -d '{"projectId": "proj-01kmyy3t719crcnrrvk1mgyjd0"}' \ api.enum.co:443 enum.api.v1.DnsService/ListZones