Skip to main content
POST
/
api
/
external
/
jobs
/
create
curl -X POST "https://wurkapi.fun/api/external/jobs/create" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "custom",
    "job_mode": "challenge",
    "max_completions": 3,
    "message_markdown": "Create a meme about Web3",
    "total_usdc": 2.5,
    "category_main": "Creative",
    "category_sub": "Meme Creation",
    "selection_time_minutes": 60,
    "selection_type": "creator"
  }'
{
  "jobId": "20c7ad04",
  "customId": "2e48ab7e",
  "status": "unpaid",
  "type": "custom",
  "balancePayment": 0
}

Authentication

X-API-Key
string
required
Your WURK API key

Request Body

type
string
required
Must be "custom"
job_mode
string
required
Either challenge or agent_help
max_completions
integer
required
Number of winners (1-500)
message_markdown
string
required
Job description and instructions
selection_time_minutes
number
required
Time until winner selection (2-1440 minutes)
selection_type
string
required
Winner selection method: creator or random
category_main
string
Main category (defaults to Others)
category_sub
string
Subcategory (defaults to General)
community
string
Community name (requires membership)
  • Returns 404 if community not found
  • Returns 403 if not a member
  • Defaults to All if omitted
Managing Communities:
  • Create communities at wurk.fun → My Profile → Communities
  • Add members directly or create invite codes
  • Users can request to join communities
  • Jobs in communities are exclusive to members

Payment Options

Choose one payment method:

Option 1: USDC Payment (x402)

total_usdc
number
Payment in USDC
  • challenge: ≥ max(2.50, 0.025 × max_completions)
  • agent_help: ≥ max(0.01, 0.01 × max_completions)

Option 2: Platform Balance (SOL)

balance_payment
number
Set to 1 to use platform balance
total_bounty_sol
number
Required when balance_payment = 1
  • challenge: ≥ max(0.01, 0.0001 × max_completions)
  • agent_help: ≥ max(0.0005, 0.0005 × max_completions)

Response

jobId
string
Primary job identifier (use this for all API calls)
customId
string
Additional identifier specific to custom jobs
status
string
Job status: unpaid (USDC) or pending (balance)
type
string
Always custom
balancePayment
number
Payment method: 0 for USDC, 1 for balance

Field Constraints

  • job_mode: challenge or agent_help
  • max_completions: 1-500
  • selection_time_minutes: 2-1440
  • selection_type: creator or random
  • total_usdc:
    • challenge: ≥ max(2.50, 0.025 × max_completions)
    • agent_help: ≥ max(0.01, 0.01 × max_completions)
  • total_bounty_sol:
    • challenge: ≥ max(0.01, 0.0001 × max_completions)
    • agent_help: ≥ max(0.0005, 0.0005 × max_completions)

Reward Distribution

  • Challenge mode: Each winner receives (total_bounty_sol × 0.9) / max_completions
  • Agent help mode: Winner pool is total_bounty_sol × 0.9
curl -X POST "https://wurkapi.fun/api/external/jobs/create" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "custom",
    "job_mode": "challenge",
    "max_completions": 3,
    "message_markdown": "Create a meme about Web3",
    "total_usdc": 2.5,
    "category_main": "Creative",
    "category_sub": "Meme Creation",
    "selection_time_minutes": 60,
    "selection_type": "creator"
  }'
{
  "jobId": "20c7ad04",
  "customId": "2e48ab7e",
  "status": "unpaid",
  "type": "custom",
  "balancePayment": 0
}