> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pulsedive.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Versioning

> Content negotiation and version support for Pulsedive's TAXII 2.1 implementation.

Pulsedive supports TAXII version 2.1, which uses the media type `application/taxii+json;version=2.1` for content negotiation.

## Version Negotiation Methods

Pulsedive provides two ways to specify the TAXII version for your requests:

* **HTTP `Accept` Header**:
  Include the media type in the `Accept` header.
  Standard method required by the TAXII specification.
  Best for production deployments and automated integrations.
* **Query String Parameter**:
  Include the media type as a URL parameter.
  Specific to Pulsedive's implementation.
  Best for testing and debugging, manual API exploration, and simple curl commands.

## HTTP Accept Header

Most TAXII clients send this header automatically.
If yours doesn't, add it manually to every request.
Always use this method in production environments.

### Example Request

```http theme={null}
GET /taxii2/ HTTP/1.1
Host: pulsedive.com
Accept: application/taxii+json;version=2.1
Authorization: Basic <YOUR_BASE64_ENCODED_API_KEY>
```

### cURL Example

```bash theme={null}
curl -H "Accept: application/taxii+json;version=2.1" \
     -H "Authorization: Basic <YOUR_BASE64_ENCODED_API_KEY>" \
     https://pulsedive.com/taxii2/
```

## Query String Parameter

This method is used throughout our documentation for easy testing.
Use it when your tool or environment makes setting headers difficult, and only for testing or debugging.

### Example Request

<Warning>
  Sample requests won't work without a valid API key.
  Get one by [signing up for a free account](https://pulsedive.com/register).
</Warning>

```bash theme={null}
curl "https://pulsedive.com/taxii2/ \
    ?key=<YOUR_API_KEY> \
    &accept=application/taxii+json;version=2.1 \
    &pretty=1"
```
