> For the complete documentation index, see [llms.txt](https://fair-indonesia.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://fair-indonesia.gitbook.io/docs/developers/guides/find-creators-for-a-campaign.md).

# Find Creators for a Campaign

This guide walks you through building a shortlist of creators for a campaign, from a first filtered search to the deep audience read you need before you reach out. You start broad with discovery, pull a large set when you need one, check the audience quality on your favorites, and end with the contact details to message them. Every call uses the same base URL and the same `Authorization` header with your raw token (no `Bearer` prefix).

All paths below are relative to the base URL:

* Trial / staging: `https://stg.api.fair-indonesia.com/api/fairservice`
* Production: `https://api.fair-indonesia.com/api/fairservice`

## 1. Filter the creator pool with `POST /discovery`

Start by describing the creator you want. `POST /discovery` searches public profiles across Instagram, TikTok, YouTube and more, and returns up to 500 matches per query. Combine filters like `follower_count`, `engagement_rate`, `creator_locations`, and `audience_age` to narrow down to the people who fit the brief.

```bash
curl -X POST https://stg.api.fair-indonesia.com/api/fairservice/discovery \
  -H 'Authorization: <your_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "work_platform_id": "9bb8913b-ddd9-430b-a66a-d74d846e6c66",
  "follower_count": { "min": 10000, "max": 250000 },
  "engagement_rate": { "percentage_value": "2.5" },
  "creator_gender": "FEMALE",
  "sort_by": { "field": "ENGAGEMENT_RATE", "order": "DESCENDING" },
  "limit": 50,
  "offset": 0
}'
```

You get back a `data` array of profiles, each with the basics you need to triage:

```json
{
  "data": [
    {
      "platform_username": "string",
      "url": "http://example.com",
      "follower_count": 0,
      "engagement_rate": 0,
      "location": { "city": "string", "state": "string", "country": "string" }
    }
  ],
  "metadata": { "offset": 0, "limit": 10 }
}
```

Page through results with `limit` and `offset` (keep `limit + offset` under 500).

## 2. Pull a large set with `POST /discovery-export`

When 500 results is not enough — say you are seeding a whole creator list — submit the same filters to `POST /discovery-export`. This runs as a job. You add `max_results` and the API returns an `id` you use to collect the export.

```bash
curl -X POST https://stg.api.fair-indonesia.com/api/fairservice/discovery-export \
  -H 'Authorization: <your_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "work_platform_id": "9bb8913b-ddd9-430b-a66a-d74d846e6c66",
  "follower_count": { "min": 10000, "max": 250000 },
  "sort_by": { "field": "ENGAGEMENT_RATE", "order": "DESCENDING" },
  "max_results": 5000
}'
```

```json
{
  "id": "3a1b...",
  "status": "SUCCESS"
}
```

## 3. Collect the export with `GET /discovery-export/{id}`

Take the `id` from the previous step and poll `GET /discovery-export/{id}` until the job finishes and the `data` array is populated. Use `limit` and `offset` to page through a large export.

```bash
curl -X GET 'https://stg.api.fair-indonesia.com/api/fairservice/discovery-export/3a1b...?limit=100&offset=0' \
  -H 'Authorization: <your_token>'
```

```json
{
  "id": "3a1b...",
  "status": "SUCCESS",
  "data": [
    {
      "platform_username": "string",
      "url": "https://example.com",
      "follower_count": 0,
      "engagement_rate": 0,
      "location": { "city": "string", "state": "string", "country": "string" }
    }
  ]
}
```

## 4. Read the audience with `POST /profile-analytics`

Discovery tells you who matches. Profile analytics tells you whether their audience is real and worth paying for. Run `POST /profile-analytics` on your shortlisted handles to get the audience breakdown, the credibility score, engagement metrics, and suggested pricing.

```bash
curl -X POST https://stg.api.fair-indonesia.com/api/fairservice/profile-analytics \
  -H 'Authorization: <your_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "identifier": "username/handle/url",
  "work_platform_id": "9bb8913b-ddd9-430b-a66a-d74d846e6c66"
}'
```

The response includes `profile.engagement_rate`, the `audience` object with `credibility_score`, `countries`, and `gender_age_distribution`, plus a `pricing` block with per-post-type ranges:

```json
{
  "profile": {
    "platform_username": "string",
    "follower_count": 0,
    "engagement_rate": 0,
    "audience": {
      "credibility_score": 0,
      "countries": [ { "code": "US", "value": 78.9 } ]
    }
  },
  "pricing": {
    "currency": "string",
    "post_type": { "reels": { "min": 2500, "max": 6000 } }
  }
}
```

## 5. Get contact details with `POST /contact-info`

Once you have decided who to approach, pull their direct contact details with `POST /contact-info`. Pass the handle or profile URL and the platform ID. This returns contact details without re-running full analytics, so it is the cheapest way to get a creator's email or other channels.

```bash
curl -X POST https://stg.api.fair-indonesia.com/api/fairservice/contact-info \
  -H 'Authorization: <your_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "identifier": "username/handle/url",
  "work_platform_id": "9bb8913b-ddd9-430b-a66a-d74d846e6c66"
}'
```

```json
{
  "profile": {
    "platform_username": "string",
    "follower_count": 0,
    "is_verified": true
  },
  "contact_details": [
    { "type": "email", "value": "creator@example.com" }
  ]
}
```

With that, you have gone from a filter to a vetted, contactable shortlist.

## Related

* [Creator Search & Analytics](/docs/developers/api-reference/creator-search-analytics.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://fair-indonesia.gitbook.io/docs/developers/guides/find-creators-for-a-campaign.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
