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

# Campaign Management

> Endpoints for managing campaigns and campaign filters

## Campaigns

### List Campaigns

<ParamField query="GET /campaigns">
  Get all campaigns
</ParamField>

#### Parameters

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Response

<ResponseField name="campaigns" type="array">
  List of campaigns
</ResponseField>

```json
{
  "campaigns": [
    {
      "id": "campaign123",
      "name": "Summer Collection",
      "status": "active",
      "startDate": "2024-06-01T00:00:00Z",
      "endDate": "2024-08-31T23:59:59Z",
      "budget": 10000,
      "createdAt": "2024-03-14T12:00:00Z"
    }
  ]
}
```

### Get Campaign

<ParamField query="GET /campaigns/:id">
  Get a specific campaign
</ParamField>

#### Parameters

<ParamField path="id" type="string" required>
  Campaign ID
</ParamField>

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Response

<ResponseField name="campaign" type="object">
  Detailed campaign information
</ResponseField>

```json
{
  "id": "campaign123",
  "name": "Summer Collection",
  "status": "active",
  "startDate": "2024-06-01T00:00:00Z",
  "endDate": "2024-08-31T23:59:59Z",
  "budget": 10000,
  "metrics": {
    "reach": 50000,
    "engagement": 2500,
    "clicks": 1000
  },
  "createdAt": "2024-03-14T12:00:00Z",
  "updatedAt": "2024-03-14T12:00:00Z"
}
```

### Create Campaign

<ParamField query="POST /campaigns">
  Create a new campaign
</ParamField>

#### Parameters

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Request Body

```json
{
  "name": "Summer Collection",
  "startDate": "2024-06-01T00:00:00Z",
  "endDate": "2024-08-31T23:59:59Z",
  "budget": 10000,
  "targetRegions": ["US", "CA"],
  "objectives": ["brand_awareness", "sales"],
  "creatorRequirements": {
    "minFollowers": 10000,
    "minEngagementRate": 0.02
  }
}
```

#### Response

<ResponseField name="campaign" type="object">
  Created campaign details
</ResponseField>

```json
{
  "id": "campaign123",
  "name": "Summer Collection",
  "status": "draft",
  "createdAt": "2024-03-14T12:00:00Z"
}
```

### Update Campaign

<ParamField query="PUT /campaigns/:id">
  Update an existing campaign
</ParamField>

#### Parameters

<ParamField path="id" type="string" required>
  Campaign ID
</ParamField>

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Request Body

```json
{
  "name": "Updated Summer Collection",
  "budget": 15000,
  "status": "active"
}
```

#### Response

```json
{
  "message": "Campaign updated successfully",
  "campaign": {
    "id": "campaign123",
    "name": "Updated Summer Collection",
    "budget": 15000,
    "status": "active",
    "updatedAt": "2024-03-14T12:00:00Z"
  }
}
```

### Delete Campaign

<ParamField query="DELETE /campaigns/:id">
  Delete a campaign
</ParamField>

#### Parameters

<ParamField path="id" type="string" required>
  Campaign ID
</ParamField>

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Response

```json
{
  "message": "Campaign deleted successfully",
  "campaignId": "campaign123"
}
```

## Campaign Filters

### List Filters

<ParamField query="GET /campaign-filters">
  Get all campaign filters
</ParamField>

#### Parameters

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Response

```json
{
  "filters": [
    {
      "id": "filter123",
      "name": "High Engagement US",
      "criteria": {
        "region": "US",
        "minEngagementRate": 0.05
      },
      "createdAt": "2024-03-14T12:00:00Z"
    }
  ]
}
```

### Get Filter

<ParamField query="GET /campaign-filters/:id">
  Get a specific campaign filter
</ParamField>

#### Parameters

<ParamField path="id" type="string" required>
  Filter ID
</ParamField>

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Response

```json
{
  "id": "filter123",
  "name": "High Engagement US",
  "criteria": {
    "region": "US",
    "minEngagementRate": 0.05,
    "categories": ["fashion", "beauty"],
    "minFollowers": 10000
  },
  "createdAt": "2024-03-14T12:00:00Z",
  "updatedAt": "2024-03-14T12:00:00Z"
}
```

### Create Filter

<ParamField query="POST /campaign-filters">
  Create a new campaign filter
</ParamField>

#### Parameters

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Request Body

```json
{
  "name": "High Engagement US",
  "criteria": {
    "region": "US",
    "minEngagementRate": 0.05,
    "categories": ["fashion", "beauty"],
    "minFollowers": 10000
  }
}
```

#### Response

```json
{
  "id": "filter123",
  "name": "High Engagement US",
  "criteria": {
    "region": "US",
    "minEngagementRate": 0.05,
    "categories": ["fashion", "beauty"],
    "minFollowers": 10000
  },
  "createdAt": "2024-03-14T12:00:00Z"
}
```

### Update Filter

<ParamField query="PUT /campaign-filters/:id">
  Update an existing campaign filter
</ParamField>

#### Parameters

<ParamField path="id" type="string" required>
  Filter ID
</ParamField>

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Request Body

```json
{
  "name": "Updated High Engagement US",
  "criteria": {
    "minEngagementRate": 0.06
  }
}
```

#### Response

```json
{
  "message": "Filter updated successfully",
  "filter": {
    "id": "filter123",
    "name": "Updated High Engagement US",
    "criteria": {
      "region": "US",
      "minEngagementRate": 0.06,
      "categories": ["fashion", "beauty"],
      "minFollowers": 10000
    },
    "updatedAt": "2024-03-14T12:00:00Z"
  }
}
```

### Delete Filter

<ParamField query="DELETE /campaign-filters/:id">
  Delete a campaign filter
</ParamField>

#### Parameters

<ParamField path="id" type="string" required>
  Filter ID
</ParamField>

<ParamField query="userId" type="string" required>
  The ID of the user
</ParamField>

#### Response

```json
{
  "message": "Filter deleted successfully",
  "filterId": "filter123"
}
```
