---
title: "Creator Partnership Gold Upgrade Endpoint"
method: POST
path: "/api/v1/remy/creator-partnership/gold-upgrade"
tags: ["remy"]
---

# Creator Partnership Gold Upgrade Endpoint

`POST /api/v1/remy/creator-partnership/gold-upgrade`

## Request

- Base URL: `https://api.brandbooster.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.brandbooster.ai/api/v1/remy/creator-partnership/gold-upgrade`
- Auth: API key in header `X-Internal-Api-Key`

Registered -> Elite or Recognized -> Elite, triggered separately from the initial intake —
the creator's last 5 campaigns (self-reported, screenshot-backed where possible). The
creator must already exist in Remy (found by profile_link or invite_token, else by email); this
route never creates a new one.
Same shared static x-api-key gate as the other two creator-partnership routes.

## Request body

- CreatorPartnershipGoldUpgradeRequestDTO: Submitted when an existing Remy creator (Registered or Recognized) upgrades to Elite — the creator must already exist (found by profile link or invite token when sent, else by email), unlike the Registered/Recognized-Elite intakes which create one if needed. Account-connect is a planned addition to this same route, not built yet.
  - `email` string, email, required
  - `profile_link` string, nullable
  - `campaigns` CreatorCampaignProofDTO[], required
    - `brand_name` string, nullable
    - `campaign_month` string, nullable
    - `platform` string, nullable
    - `content_type` string, nullable
    - `content_link` string, required
    - `campaign_objective` string, nullable
    - `views_reach_screenshot` ScreenshotUploadDTO: One creator-submitted proof file, sent either inline or by link. content_base64 is what the landing-page form sends: it holds the file in the browser, so it can post the bytes straight into the request. source_url is for the intake paths that only ever have a link — a Google Form's Apply Script hands over a Drive file, and re-downloading it in the browser just to re-upload it would be silly. Either way the file ends up on our own bucket, so nothing downstream depends on the original link staying reachable.
      - `filename` string, nullable
      - `content_base64` string, nullable
      - `source_url` string, nullable
      - `content_type` string, nullable
    - `engagement_rate_screenshot` ScreenshotUploadDTO: One creator-submitted proof file, sent either inline or by link. content_base64 is what the landing-page form sends: it holds the file in the browser, so it can post the bytes straight into the request. source_url is for the intake paths that only ever have a link — a Google Form's Apply Script hands over a Drive file, and re-downloading it in the browser just to re-upload it would be silly. Either way the file ends up on our own bucket, so nothing downstream depends on the original link staying reachable.
      - `filename` string, nullable
      - `content_base64` string, nullable
      - `source_url` string, nullable
      - `content_type` string, nullable
    - `ctr_screenshot` ScreenshotUploadDTO: One creator-submitted proof file, sent either inline or by link. content_base64 is what the landing-page form sends: it holds the file in the browser, so it can post the bytes straight into the request. source_url is for the intake paths that only ever have a link — a Google Form's Apply Script hands over a Drive file, and re-downloading it in the browser just to re-upload it would be silly. Either way the file ends up on our own bucket, so nothing downstream depends on the original link staying reachable.
      - `filename` string, nullable
      - `content_base64` string, nullable
      - `source_url` string, nullable
      - `content_type` string, nullable
    - `conversions_screenshot` ScreenshotUploadDTO: One creator-submitted proof file, sent either inline or by link. content_base64 is what the landing-page form sends: it holds the file in the browser, so it can post the bytes straight into the request. source_url is for the intake paths that only ever have a link — a Google Form's Apply Script hands over a Drive file, and re-downloading it in the browser just to re-upload it would be silly. Either way the file ends up on our own bucket, so nothing downstream depends on the original link staying reachable.
      - `filename` string, nullable
      - `content_base64` string, nullable
      - `source_url` string, nullable
      - `content_type` string, nullable
    - `rate_charged` number, nullable
    - `brand_testimonial` string, nullable
  - `invite_token` string, nullable

## Response `202`

Successful Response

- CreatorPartnershipJobStartedResponseDTO: Accepted creator-partnership upgrade; processing continues in a Remy job.
  - `job_id` string, required
  - `status` string, required
  - `operation` string, required
  - `requested_plan` string, required
  - `status_url` string, required

## Other responses

- `422`: Validation Error

## Changes

> 35 revisions in range; 1 not diffed.

- **2026-10-01** `fff247daebe7`: 1 info
  - added the new optional request property `profile_link`
- **2026-09-16** `dda5cf04b73d`: 1 breaking, 1 info
  - removed the success response with the status `200`
  - added the success response with the status `202`
- **2026-09-11** `163530d84bc1`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/brandbooster/apis/fastapi/changes/api/v1/remy/creator-partnership/gold-upgrade/post.md)

---

[API](https://skmtc.dev/brandbooster/apis/fastapi.md) - [All operations](https://skmtc.dev/brandbooster/apis/fastapi/llms.txt) - [OpenAPI document](https://skmtc.dev/brandbooster/apis/fastapi/revisions/8e8c18c2dc35?raw)
