Grok3API
An asynchronous library for interacting with Grok via the mobile gRPC channel: sending messages, streaming responses, parsing protobuf chunks, and retrieving structured API data.
➡ Ru README
Features
- 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
Installation
pip install git+ssh://git@github.com/boykopovar/Grok3API.git -U
Requirements
- Python 3.8+
- aiohttp
- coincurve
Streaming Example
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())
Standard Request
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())
Continue started conversation
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())
Pydantic Models
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
Supported
Response Chunks
TokenChunkModelResponseChunkFinalMetadataChunkSurveyChunkConversationChunkTitleChunk
Response Models
AskResponseModelResponseFinalMetadataConversationSurveyResponseStepToolUsageResultWebSearchResultXPostRagResultCollectionSearchResultItemConnectorSearchResultItemStreamError
Tool Responses
- web search
- X/Twitter search
- RAG results
- connector search
- collection search
- memory updates
- code execution
- image generation
- video generation
- audio generation
Error Handling
from grok3api.types.exceptions import (
GrokApiError,
GrokRestError,
GrokGrpcError,
GrokRateLimitError,
GrokUnderHeavyUsageError,
GrokStreamError,
GrokUnavailableRegionError,
GrokTooManyRequestsError
)
How the Client Works
- 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
Disclaimer
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.
Metadata
Release files for Grok3API 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| grok3api-0.2.1.tar.gz | 17.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| grok3api-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.1 kB
Release files / grok3api-0.2.1.tar.gz
| Download URL | grok3api-0.2.1.tar.gz |
|---|---|
| Size | 17.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
daf231a763fb6676cf0e32aecd20f5dfcfe2f20b25eb453073362b82f60fe2b2
|
|
BLAKE2b-256 checksum How to use checksums |
1ddbde519deaf2d30ba867877c3cc1e1cf7be208ce08666fac448da4c073ee3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 24, 2026.
Transparency logRelease files / grok3api-0.2.1-py3-none-any.whl
| Download URL | grok3api-0.2.1-py3-none-any.whl |
|---|---|
| Size | 22.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4210a47f4fe1b044d028d767f4041a7afcdcf9d7a2fd1c46e3c02b9b04c42958
|
|
BLAKE2b-256 checksum How to use checksums |
c36c02b1e4137fa48c8f6bde91a91dc0f6297aabf6f64ba53d03b6056a4a7a73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 24, 2026.
Transparency log