Creators

Update an existing job

Updates a job posting — all fields; the body and challenge as markdown or TipTap JSON, like on create. Published jobs stay fully editable — there is no field locking.

put/jobs/{id}

Request

  • Base URL: https://viral.app/api/v1
  • URL: https://viral.app/api/v1/jobs/{id}
  • Auth: API key in header x-api-key

Path parameters

idstring required

Job posting ID

Example:orgjob_RwmraAffhMt9

Request body

productTitlestring required

Product the job promotes

productDescriptionstring required

Short product description shown in the listing

logoUrlstring

Template URL of the uploaded product logo

productNichesstring[] required

Product niches (shared taxonomy with creator discovery profiles)

contentFormatsstring[]

Content formats the job asks for; empty accepts any

countryResidencesstring[]

Countries of residence creators may apply from (ISO3); empty accepts any

languagesstring[]

Content languages the creator must produce in; empty accepts any

minAgeinteger

Minimum creator age (no maximum age by design)

aiContentPolicy'real_only' | 'ai_only'

AI content requirement — 'real_only' excludes fully-AI creators, 'ai_only' excludes real-only creators; unset accepts both

jobType'canvas_ugc' | 'influencer' | 'ugc_ads' | 'creator_manager' | 'other' required
minWeeklyHoursinteger

Minimum weekly hours the creator must have available

minWeeklyVideosinteger

Minimum videos per week the creator must be able to produce

platformFocusstring[]

Platforms the content is produced for

accountType'new_account' | 'personal_account' | 'company_account'
exampleVideoUrlsstring[]

Example video links (TikTok, Instagram Reels, YouTube); each becomes an example-video tile on the posting at save time, tracked as a reference — a link that cannot be fetched stays a plain link. Ignored when exampleVideos is sent.

videoSubmissionRequiredboolean
challengeBriefMarkdownstring nullable

Markdown: ##/### headings, paragraphs, bold, italic, links, images alt, - and 1. lists, and $variable placeholders. Code, quotes, rules and tables fall back to plain paragraphs.

currency'USD' | 'EUR' | 'CHF' | 'GBP' | 'CNY' | 'JPY' | 'KRW' | 'THB' | 'IDR' | 'VND' | 'RUB' required
payFrequency'one_time' | 'per_day' | 'per_week' | 'per_month' required
flatSalaryAmountinteger

Amount in minor units of the job currency

perVideoAmountinteger

Amount in minor units of the job currency

cpmAmountinteger

Amount in minor units of the job currency

bonusAmountinteger

The HIGHEST one-time bonus a single video can earn, in minor units of the job currency (creators read it as 'Bonus up to …'). The view milestones are campaign terms; a rate per 1,000 views is cpmAmount, never a bonus.

bodyMarkdownstring nullable

Markdown: ##/### headings, paragraphs, bold, italic, links, images alt, - and 1. lists, and $variable placeholders. Code, quotes, rules and tables fall back to plain paragraphs.

Example request

{
  "productTitle": "Habit Tracker Pro",
  "productDescription": "A habit tracking app that keeps you accountable with streaks and reminders.",
  "countryResidences": [
    "USA",
    "DEU"
  ],
  "languages": [
    "en"
  ],
  "platformFocus": [
    "facebook"
  ],
  "exampleVideos": [
    {
      "platform": "facebook",
      "label": "Money-glitch hook"
    }
  ],
  "sampleVideos": [
    {
      "platform": "facebook",
      "label": "Money-glitch hook"
    }
  ]
}

Response

OK

idstring required
status'draft' | 'public' | 'paused' required
productTitlestring required
productDescriptionstring required
logoUrlstring nullable required
productNichesstring[] required
contentFormatsstring[] required
countryResidencesstring[] required
languagesstring[] required
minAgeinteger nullable required
aiContentPolicystring nullable required
jobTypestring required
minWeeklyHoursinteger nullable required
minWeeklyVideosinteger nullable required
platformFocusstring[] required
accountTypestring nullable required
exampleVideoUrlsstring[] required
videoSubmissionRequiredboolean required
sampleVideoUrlsstring[] required
currencystring required
payFrequencystring required
flatSalaryAmountinteger nullable required
perVideoAmountinteger nullable required
cpmAmountinteger nullable required
bonusAmountinteger nullable required
publishedAtstring date-time nullable required
embeddingunknown
embeddingModelstring nullable required
embeddedAtstring date-time nullable required
firstMatchesNotifiedAtstring date-time nullable required
pausedReasonstring nullable required
createdAtstring date-time required
updatedAtstring date-time required
actorType'user' | 'system' | 'api_token' required
userIdstring required
orgIdstring required
bodyMarkdownstring nullable required

The posting's body as markdown; null without a body

challengeBriefMarkdownstring nullable required

The application challenge as markdown; null without one

Changes

No recorded changes to this operation across all 1 revision of this API.