An asynchronous library for interacting with Grok via the mobile gRPC channel: sending messages, streaming responses, parsing protobuf chunks, and retrieving structured API data.
- asynchronous client
- streaming responses via
new_ask_stream() - regular requests via
new_ask() - protobuf/gRPC framing
- typed Pydantic models
- streaming chunk parsing
- REST/gRPC/stream error handling
- support for metadata/tool responses/search results
pip install git+ssh://git@github.com/boykopovar/Grok3API.git -U- Python 3.8+
- aiohttp
- coincurve
import asyncio
from grok3api.client import GrokClient
from grok3api.types.request import ChatRequest
from grok3api.types import TokenChunk
async def main():
async with GrokClient() as client:
while True:
print("\nGrok: ", end="")
async for chunk in client.new_ask_stream(
request=ChatRequest(
message=input("\nYou: "),
temporary=False
),
chunks_white_list=(TokenChunk,)
):
print(chunk.token, end="", flush=True)
if __name__ == "__main__":
asyncio.run(main())import asyncio
from grok3api.client import GrokClient
from grok3api.types.request import ChatRequest
async def main():
async with GrokClient() as client:
response = await client.new_ask(
ChatRequest(
message="Hello",
temporary=False
)
)
print(response.text)
print(response.model_response)
if __name__ == "__main__":
asyncio.run(main())import asyncio
from grok3api.client import GrokClient
from grok3api.types.request import ChatRequest, AddResponseRequest
async def main():
async with GrokClient() as client:
first = await client.new_ask(
ChatRequest(
message="Hello",
temporary=False
)
)
second = await client.add_response(
AddResponseRequest(
conversation_id=first.conversation.conversation_id,
message="How are you?"
)
)
print(second.text)
if __name__ == "__main__":
asyncio.run(main())All models fully match the actual protobuf/gRPC API responses.
The library does not include:
- simplified structures
- artificial abstraction layers
- field normalization
- payload field renaming
- hiding original API values
TokenChunkModelResponseChunkFinalMetadataChunkSurveyChunkConversationChunkTitleChunk
AskResponseModelResponseFinalMetadataConversationSurveyResponseStepToolUsageResultWebSearchResultXPostRagResultCollectionSearchResultItemConnectorSearchResultItemStreamError
- web search
- X/Twitter search
- RAG results
- connector search
- collection search
- memory updates
- code execution
- image generation
- video generation
- audio generation
from grok3api.types.exceptions import (
GrokApiError,
GrokRestError,
GrokGrpcError,
GrokRateLimitError,
GrokUnderHeavyUsageError,
GrokStreamError,
GrokUnavailableRegionError,
GrokTooManyRequestsError
)- the protobuf request is serialized into a binary payload
- the payload is wrapped into a gRPC frame
- the request is sent to the mobile gRPC endpoint
- the client reads the streaming response
- protobuf chunks are decoded into Pydantic models
This project is not affiliated with xAI and is not an official SDK.
This is an independent implementation of the mobile Grok API obtained through reverse engineering.