For guidance and examples, see [Create an assistant](/guides/build-an-assistant-create-assistant)

:::code-group
```python Python theme={null}
# To use the Python SDK, install the plugin:
# pip install --upgrade pinecone pinecone-plugin-assistant

from pinecone import Pinecone

pc = Pinecone(api_key="YOUR_API_KEY")

assistant = pc.assistant.create_assistant(
    assistant_name="example-assistant",
    instructions="Use American English for spelling and grammar.",
    region="us", # Region to deploy assistant. Options: "us" (default) or "eu".
    timeout=30 # Maximum seconds to wait for assistant status to become "Ready" before timing out.
)
```

```javascript JavaScript theme={null}
import { Pinecone } from '@pinecone-database/pinecone';

const pc = new Pinecone({ apiKey: 'YOUR_API_KEY' });

const assistant = await pc.createAssistant({
  name: 'example-assistant',
  instructions: 'Use American English for spelling and grammar.',
  region: 'us'
});
```

```bash curl theme={null}
PINECONE_API_KEY="YOUR_API_KEY"

curl "https://api.pinecone.io/assistant/assistants" \
  -H "Api-Key: $PINECONE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Pinecone-Api-Version: 2025-04" \
  -d '{
  "name": "example-assistant",
  "instructions": "Use American English for spelling and grammar.",
  "region":"us"
}'
```
:::

`POST /assistants`

:::code-group
```json title="200"
{
  "name": "example-assistant",
  "instructions": "<string>",
  "metadata": {},
  "status": "Initializing",
  "host": "<string>",
  "created_at": "<string>",
  "updated_at": "<string>"
}
```

```json title="400"
{
  "error": {
    "code": "INVALID_ARGUMENT",
    "message": "Uploaded file can only currently be either a pdf or txt file"
  },
  "status": 400
}
```

```json title="401"
{
  "error": {
    "code": "UNAUTHENTICATED",
    "message": "Invalid API key."
  },
  "status": 401
}
```

```json title="429"
{
  "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "The index exceeds the project quota of 5 pods by 2 pods. Upgrade your account or change the project settings to increase the quota."
  },
  "status": 429
}
```

```json title="500"
{
  "error": {
    "code": "UNKNOWN",
    "message": "Internal server error"
  },
  "status": 500
}
```
:::

#### Authorizations

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `Api-Key` | `string` | - | Pinecone API Key |

#### Body

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `string` | - | The name of the assistant. Resource name must be 1-45 characters long, start and end with an alphanumeric character, and consist only of lower case alphanumeric characters or '-'. Required string length: 1 - 45. Example: example-assistant |

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `instructions?` | `string \| null` | - | Description or directive for the assistant to apply to all responses. |

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `metadata?` | `object` | - |  |

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `region?` | `enum<string>` | - | The region to deploy the assistant in. Our current options are either us or eu. Defaults to us. Available options: us, eu |

#### Response

`200` — Create request successful.

The AssistantModel describes the configuration and status of a Pinecone Assistant.

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `name` | `string` | - | The name of the assistant. Resource name must be 1-45 characters long, start and end with an alphanumeric character, and consist only of lower case alphanumeric characters or '-'. Required string length: 1 - 45. Example: example-assistant |

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `instructions?` | `string \| null` | - | Description or directive for the assistant to apply to all responses. |

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `metadata?` | `object \| null` | - |  |

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `status` | `enum<string>` | - | Available options: Initializing, Failed, Ready, Terminating, InitializationFailed |

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `host?` | `string` | - | The host where the assistant is deployed. |

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `created_at?` | `string` | - |  |

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `updated_at?` | `string` | - |  |

## Related pages

- [Account management](./account-management-index.md)
- [Admin](./admin-2-index.md)
- [Admin](./admin-index.md)
- [APIs](./apis-index.md)
- [Architecture](./architecture-index.md)
- [Assistants](./assistants-index.md)
- [Bring Your Own Cloud](./bring-your-own-cloud-index.md)
- [Build an assistant](./build-an-assistant-index.md)
- [Build an integration](./build-an-integration-index.md)
- [Changelog](./changelog-index.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
