Skip to main content

React SDK

npm i @ainative/react-sdk

Setup

Wrap your app with AINativeProvider:

import { AINativeProvider } from '@ainative/react-sdk';

function App() {
return (
<AINativeProvider
apiKey="your-api-key"
projectId="your-project-id"
>
<YourApp />
</AINativeProvider>
);
}

useChat Hook

Stream chat completions with automatic message state management.

import { useChat } from '@ainative/react-sdk';

function Chat() {
const {
messages,
sendMessage,
isLoading,
error,
clearMessages
} = useChat({
model: 'meta-llama/llama-3.3-70b-instruct',
systemPrompt: 'You are a helpful assistant.',
});

return (
<div>
{messages.map(m => (
<div key={m.id}>
<strong>{m.role}:</strong> {m.content}
</div>
))}
<button
onClick={() => sendMessage('Hello!')}
disabled={isLoading}
>
Send
</button>
</div>
);
}

useChat Options

OptionTypeDefaultDescription
modelstring"meta-llama/llama-3.3-70b-instruct"Model ID
systemPromptstringnullSystem message
temperaturenumber0.7Sampling temperature
maxTokensnumber4096Max response tokens
onMessagefunctionnullCallback per message chunk
onErrorfunctionnullError callback

useChat Returns

FieldTypeDescription
messagesMessage[]Conversation history
sendMessagefunctionSend a user message
isLoadingbooleanTrue while streaming
errorError | nullLast error
clearMessagesfunctionReset conversation

useCredits Hook

Monitor API credit balance.

import { useCredits } from '@ainative/react-sdk';

function CreditDisplay() {
const { balance, isLoading } = useCredits();

if (isLoading) return <span>Loading...</span>;
return <span>Credits: {balance}</span>;
}

TypeScript Support

All hooks are fully typed. Import types:

import type { Message, ChatOptions, CreditBalance } from '@ainative/react-sdk';

Next Steps