Skip to main content

Choose Your Method

WURK offers two ways to create jobs:

Quick Endpoints (Recommended)

No API key required! Create preconfigured jobs with just 2 HTTP requests. Perfect for getting started immediately.

Full API

Complete control with API key. Customize every aspect of your jobs.

Method 1: Quick Endpoints (No API Key)

The fastest way to get started - no registration required!

Example: Create 100 X/Twitter Likes

1

Make Discovery Request

curl -i \
  "https://wurkapi.fun/api/x402/quick/base/xlikes-100?url=https%3A%2F%2Fx.com%2Fyourpost%2Fstatus%2F123" \
  -H "Accept: application/json"
This returns a 402 status with payment requirements ($2.50 USDC).
2

Send Payment

Use the x402 library to create and send payment:For Base (EVM):
import { withPaymentInterceptor } from 'x402-axios';
import { privateKeyToAccount } from 'viem/accounts';

const account = privateKeyToAccount(YOUR_PRIVATE_KEY);
const api = withPaymentInterceptor(axios.create(), account);

const result = await api.get(
  'https://wurkapi.fun/api/x402/quick/base/xlikes-100?url=...',
  { headers: { 'Accept': 'application/json' }}
);
For Solana:
import { createSigner } from 'x402/types';

const signer = await createSigner('solana', YOUR_PRIVATE_KEY);
// ... handle x402 flow
3

Job Created!

{
  "ok": true,
  "paid": true,
  "jobId": "abc123de"
}
Your job is now active with 100 completions configured!

Available Quick Jobs

X/Twitter Reposts

reposts-100 - 100 reposts for $2.50

X/Twitter Likes

xlikes-100 - 100 likes for $2.50

Instagram Likes

insta-likes-100 - 100 likes for $2.50

DexScreener Rockets

dex-rocket-100 - 100 rockets for $2.50
Quick Endpoints are perfect for common use cases. For full customization, use Method 2 below.

Learn More

Method 2: Full API (With API Key)

For complete control over job parameters.

Prerequisites

API Key

Get your API key from wurk.fun/apikey

Payment Method

Either USDC (on Solana or Base) or platform balance (SOL)

Create Your First Job

Let’s create a simple social media repost job:
curl -X POST "https://wurkapi.fun/api/external/jobs/create" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "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
  }'

Response

{
  "jobId": "abc123def",
  "status": "unpaid",
  "type": "social",
  "balancePayment": 0
}

Complete the Payment

Since we used USDC payment, we need to complete the x402 payment:
1

Get Payment Requirements

Request the payment details for your job:For Solana:
curl -X GET "https://wurkapi.fun/api/x402/jobs/abc123def/pay" \
  -H "Accept: application/json"
For Base:
curl -X GET "https://wurkapi.fun/api/x402/base/jobs/abc123def/pay" \
  -H "Accept: application/json"
This returns a 402 status with payment requirements.
2

Send Payment

Use the x402 library to create and send the payment header:For Solana:
import { createSigner } from 'x402/types';
import { selectPaymentRequirements, createPaymentHeader } from 'x402/client';

// Create signer with your Solana private key
const signer = await createSigner('solana', YOUR_PRIVATE_KEY);

// Select payment requirements
const selected = selectPaymentRequirements(accepts, ['solana'], 'exact');

// Create payment header
const xPayment = await createPaymentHeader(signer, x402Version, selected);

// Send payment
const payResponse = await fetch('https://wurkapi.fun/api/x402/jobs/abc123def/pay', {
  headers: {
    'Accept': 'application/json',
    'X-PAYMENT': xPayment
  }
});
For Base:
import { privateKeyToAccount } from 'viem/accounts';
import { withPaymentInterceptor } from 'x402-axios';
import axios from 'axios';

// Create account with your EVM private key
const account = privateKeyToAccount(YOUR_PRIVATE_KEY);

// Create axios instance with payment interceptor
const api = withPaymentInterceptor(
  axios.create({ baseURL: 'https://wurkapi.fun' }),
  account
);

// The interceptor handles the 402 flow automatically
const payResponse = await api.get(`/api/x402/base/jobs/abc123def/pay`, {
  headers: { 'Accept': 'application/json' }
});
3

Verify Success

A successful payment returns:
{
  "ok": true,
  "paid": true,
  "jobId": "abc123def"
}
Your job is now active!

Alternative: Use Platform Balance

If you have SOL balance on the platform, you can skip the x402 payment:
curl -X POST "https://wurkapi.fun/api/external/jobs/create" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "social",
    "tweet_url": "https://x.com/yourhandle/status/1234567890",
    "min_rank": 1,
    "cooldown_minutes": 5,
    "jobtype": "repost",
    "max_completions": 100,
    "balance_payment": 1,
    "total_bounty_sol": 0.12
  }'
Response for balance payment:
{
  "jobId": "xyz789abc",
  "status": "pending",
  "type": "social",
  "balancePayment": 1
}
Jobs paid with platform balance activate immediately - no additional payment step needed!

What’s Next?