Skip to main content

Overview

Social jobs enable automated Twitter/X engagement campaigns where workers interact with specified tweets through reposts, comments, or both.

Job Types

  • Repost
  • Comment
  • Repost + Comment
Workers repost (retweet) your tweet to their followers.
{
  "jobtype": "repost",
  "max_completions": 100  // Up to 1000
}

Creating a Social Job

Basic Example

const response = await fetch('https://wurkapi.fun/api/external/jobs/create', {
  method: 'POST',
  headers: {
    'X-API-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    type: 'social',
    tweet_url: 'https://x.com/yourhandle/status/1234567890',
    min_rank: 1,
    cooldown_minutes: 5,
    jobtype: 'repost',
    max_completions: 100,
    total_usdc: 5.0
  })
});

With Instructions

For comment-based jobs, provide clear instructions:
{
  type: 'social',
  tweet_url: 'https://x.com/yourhandle/status/1234567890',
  min_rank: 2,
  cooldown_minutes: 10,
  jobtype: 'comment',
  max_completions: 50,
  message_markdown: `
Please share your genuine thoughts about this announcement.

Include:
- What excites you most
- How you might use this feature
- Add the hashtag #WURK

Keep it authentic and meaningful!
  `,
  total_usdc: 3.0
}

Parameters Explained

Worker Requirements

min_rank
integer
required
Minimum worker rank (1-3)
  • 1: All wurkers
  • 2: Experienced wurkers
  • 3: Experienced wurkers with good history
Higher ranks ensure better quality but may complete slower.Recommended maximum completions per rank:
  • Rank 3: 100 completions
  • Rank 2: 250 completions
  • Rank 1: 1000 completions
Automatic Rank Adjustment: If a social job doesn’t reach its completion target within 12 hours at the specified rank, the system automatically lowers the rank requirement. This allows users from lower ranks to participate and ensures your job gets completed. The rank degradation continues until the job is fully completed or reaches rank 1.
cooldown_minutes
number
required
Time before reward is distributed to participant (0-1440)This setting determines how long a user must keep the post on their profile before receiving the reward. Can be set to any value between 0 (immediate) and 1440 minutes (24 hours).

Tweet Requirements

Tweet Validation
  • Tweet must exist and be public
  • Cannot have more than 500 existing reposts
  • Some accounts may be blocked from job creation to prevent spam
  • Only one active job per tweet allowed

Pricing Structure

  • USDC Pricing
  • SOL Pricing
Minimum cost calculation:
Minimum = max($2.50, $0.025 × max_completions)
Examples:
  • 50 reposts: $2.50 minimum
  • 100 reposts: $2.50 minimum
  • 200 reposts: $5.00 minimum
  • 500 reposts: $12.50 minimum
  • 1000 reposts: $25.00 minimum

Best Practices

  • Timing: Create jobs when your target audience is active
  • Rank: Balance quality vs speed with appropriate min_rank
  • Instructions: Provide clear, specific guidance for comments
Good instructions lead to better engagement:
Share your experience with our product!

- What problem did it solve for you?
- What feature do you use most?
- Include #OurProduct hashtag

Be genuine and specific - generic comments won't be accepted.
Jobs promoting spam, racism, violence, negativity, or other unethical behavior will be frozen and not executed. We strive to maintain a positive and healthy platform where people build together.

Monitoring Your Jobs

Check Job Status

// List your open social jobs
const response = await fetch('https://wurkapi.fun/api/external/jobs/open/social', {
  headers: { 'X-API-Key': 'YOUR_API_KEY' }
});

const { jobs } = await response.json();
jobs.forEach(job => {
  console.log(`Job ${job.jobId}: ${job.completions}/${job.max_completions}`);
});

Track Completion Rate

Monitor how quickly your job is completing:
function calculateCompletionRate(job) {
  const elapsed = Date.now() - new Date(job.created_at).getTime();
  const hoursElapsed = elapsed / (1000 * 60 * 60);
  const rate = job.completions / hoursElapsed;
  
  return {
    completionsPerHour: rate,
    estimatedHoursRemaining: (job.max_completions - job.completions) / rate
  };
}

Examples by Use Case

Product Launch

{
  type: 'social',
  tweet_url: 'https://x.com/company/status/launch_tweet',
  min_rank: 2,
  cooldown_minutes: 3,
  jobtype: 'repost_comment',
  max_completions: 200,
  message_markdown: 'Share what feature excites you most about our new product!',
  total_usdc: 10.0
}

Community Feedback

{
  type: 'social',
  tweet_url: 'https://x.com/company/status/feedback_request',
  min_rank: 3,
  cooldown_minutes: 10,
  jobtype: 'comment',
  max_completions: 100,
  message_markdown: 'What improvements would you like to see? Be specific!',
  total_usdc: 5.0
}

Announcement Amplification

{
  type: 'social',
  tweet_url: 'https://x.com/company/status/major_news',
  min_rank: 1,
  cooldown_minutes: 1,
  jobtype: 'repost',
  max_completions: 500,
  total_usdc: 12.50
}

Troubleshooting

Common Error Codes
  • 400: Tweet not found or invalid parameters
  • 403: Tweet author is blocked
  • 409: Job already exists for this tweet
  • 429: Rate limit exceeded (3/min)

Next Steps