Create or update a job
Create or update a job for the token tenant. Passing programId (or programIds) links the job to that campaign — the “Post & Get Applications” flow that posts an existing campaign to the marketplace so creators can discover it and apply. Requires the jobs:write scope.
Authorizations
OAuth 2.1 authorization code + PKCE (S256). Tokens are tenant-bound (company_id) and scoped. Discover endpoints via /.well-known/oauth-authorization-server.
Body
Create (no id) or update (with id) a job. companyId is injected from the token and must NOT be sent. The validator is permissive (extra fields are passed through). On CREATE the OAuth completeness gate additionally requires a recognized jobType, a cover image (imageUrl or imageDataUrl), creatorType when jobType is "Content Creator", and payFrequency for fixed/mixed payment. The matching rate field for the chosen paymentType must be a positive numeric value.
Job title (required).
1How creators get paid (required). The matching rate field is required and must be a positive number.
fixed, hourly, commission, performance, mixed, pay-per-post Job id. Present => update; absent => create (a create spends 1 posting credit).
Job description (optional for the upsert validator; the MCP tool marks it required to guide agents).
Job category. Required on CREATE (completeness gate); must be one of the listed values.
Sales, Marketing, Content Creator, Ambassador, Other Kind of creator. Required on CREATE when jobType is "Content Creator".
ugc_ads, high_volume_ugc, influencer, creator_manager, other Flat pay per creator (numeric string). Required for fixed/mixed paymentType.
Pay per hour (numeric string). Required for hourly paymentType.
Pay per 1,000 views (numeric string). Required for performance/mixed paymentType.
Pay per post (numeric string). Required for pay-per-post paymentType.
Free-text pay/commission description. Required for commission paymentType.
Pay cadence. Required on CREATE for fixed/mixed payment.
One Time, Per Day, Per Week, Per Month, Per Semester Expected hours per week (free text).
Optional milestone bonus structure.
Type of content the creator should produce.
UGC, Short-form, Tutorial, Reaction, Lifestyle, Review Which kind of social account the creator should post from.
new_account, personal_account, company_account Required/expected video length (free text).
Expected posting cadence (free text).
Link the job to a single program (campaign) by id — posts that existing campaign to the marketplace (the "Post & Get Applications" flow) so creators can discover it and apply.
Link the job to multiple programs (campaigns) by id — posts those existing campaigns to the marketplace so creators can discover them and apply.
Cover image as a hosted HTTPS URL (or same-origin relative path). Required on CREATE unless imageDataUrl is provided. blob:/data:/javascript: schemes are rejected.
Inline cover image as a base64 data URL (PNG/JPEG/WebP). Uploaded as part of the job after the gated upsert succeeds and stored as imageUrl. (MCP arg name: image_data_url.)
Display company name for the posting.
Restrict the job to creators from these schools.
Available shifts (free-text entries).
Whether applicants must submit a resume.
Whether the promoted product is an app.
Whether the promoted product is a physical product.
Whether the job is hidden from the public feed.
Posting status (defaults to completed on create).
completed, archived, deleted Advanced/legacy requirements object (prefer the dedicated fields).
Platforms the creator should post on.
TikTok, Instagram, YouTube, Twitter, Facebook, Snapchat Whether TikTok is required.
Whether Instagram is required.
Minimum age requirement for applicants.
any, 18+, 21+ Whether age 21+ is required.
Reference/example videos illustrating the desired content.
Response
Result of creating or updating the job. NOTE: the route actually returns HTTP 201 on success (route.ts:44); the manifest successCode is 200 — see todos.
Result of creating or updating a job.