SocialEarning API Documentation

Register as an Advertiser to Generate Key

We'll send a POST request with a JSON payload to this URL whenever one of your orders is placed, approved, paused, resumed, stopped, or rejected etc.

Leaving all of these unchecked means you'll receive all notification types below, not none.

API Details
  • Base URL: https://socialearning.org/api
  • Allowed Methods: GET, POST
  • Response: JSON
  • Authentication: Token (Your Key)
Endpoints
Endpoint Method Parameters Response
/balance GET None Current balance and total withdrawal
/service/list GET None List of services and IDs
/order/list GET status (optional),id (optional),link (optional) All orders you have placed
/get/order GET id or link Order details for the given ID/Link
/update/order GET id, type (pause, resume, cancel, stopandrefund) Status update response
/create/post POST Social_Media, link, rate_needed, custom_text (optional) Success message with order ID
/increase/audience POST id, rate_needed Success message with updated order
/search/order POST filt_data (required), social_media (optional) Filtered list of orders from all general orders placed on socialearning
/download/audience_list GET id Download a PDF list of earners who submitted approved tasks for an order

Retrieves your current balance and total withdrawal.

https://socialearning.org/api/balance
Request
curl -X GET 'https://socialearning.org/api/balance' \
-H 'Authorization: Token YOUR_API_KEY'
Response
{
  "status": true,
  "data": {
    "Wallet_balance": "27839.00",
    "Total_deposit": "2254237.00"
  }
}

Retrieves all the active services.

curl -X GET "https://socialearning.org/api/service/list" \
-H "Authorization: Token YOUR_API_KEY"
{
  "status": true,
  "data": [
    {
      "id": 60,
      "Social_Media": "YOUTUBEMUSIC",
      "Type": "Music Like",
      "poster_price": "8.00",
      "partner_price": "5.00",
      "is_active": true,
      "poster_descriptions":"Service Instructions"
    }
    {
      "id": 60,
      "Social_Media": "TWITTRER POST",
      "Type": "Music Like",
      "poster_price": "8.00",
      "partner_price": "5.00",
      "is_active": false,
      "poster_descriptions":"Service Instructions"
    }
  ]
}

Creates a new order.

  • Social_Media – Service ID (Required)
  • link – Valid link (Required)
  • rate_needed – Audience count (Required)
  • custom_text – Custom text (Optional)
curl -X POST 'https://socialearning.org/api/create/post' \
-H 'Authorization: Token YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data-raw '{
  "Social_Media": "11",
  "link": "https://twitter.com/Social_Earning",
  "rate_needed": "50",
  "custom_text": "Good job \r\n Keep going"
}'
{
  "status": true,
  "message": "Order posted successfully",
  "data": {
    'id': 106, 
      'Social_Media': 11, 
      'status': 'approved', 
      'message': None, 
      'progressing': False, 
      'link': 'https://twitter.com/Social_Earning/', 
      'date_posted': '2023-04-19T09:29:51.826621Z', 
      'rate_needed': 510, 
      'rate_done': 0, 
      'amount_paid':1000.00
      'amount_refunded':0.00
      'custom_text': 'Good boy \r\n Bad boy Spending', 
      'order_method': 'API'
  }
}

Retrieves all the orders you have placed (paginated).

  • Status – (pending, approved, rejected, finished, cancel, paused) (Optional)
  • link – Valid link (Optional)
  • id – Custom text (Optional)
curl -X GET 'https://socialearning.org/api/order/list' \
-H 'Authorization: Token YOUR_API_KEY'
{
"status":true or false,
"count":9434,
"total_pages":189,
"current_page_number":1,
"next":"https://socialearning.org/api/order/list?page=2",
"next_page_number":2,
"previous":null,
"previous_page_number":null,
'data': 
    [
    {
        'id': 106, 
        'Social_Media': 11, 
        'status': 'approved', 
        'message': None, 
        'progressing': True, 
        'link': 'https://twitter.com/Social_Earning/', 
        'date_posted': '2023-04-19T09:29:51.826621Z', 
        'rate_needed': 510, 
        'rate_done': 500, 
        'amount_paid':1000.00
        'amount_refunded':0.00
        'custom_text': 'Good boy \r\n Bad boy Spending', 
        'order_method': 'API'
    }, 
    {
        'id': 105, 
        'Social_Media': 11, 
        'status': 'pending', 
        'message': None, 
        'progressing': False, 
        'link': 'https://twitter.com/Social_Earning/status/1639208170282270720', 
        'date_posted': '2023-04-16T09:03:39.972090Z', 
        'rate_needed': 500, 
        'rate_done': 0, 
        'custom_text': '', 
        'order_method': 'API'
    },
    ]
}

Retrieves a post by ID or link.

  • id or link – Post id or the Post link (Required)
curl -X GET 'https://socialearning.org/api/get/order?id=106' \
-H 'Authorization: Token YOUR_API_KEY'
{
  "status": true,
  "data": {
    'id': 106, 
    'Social_Media': 11, 
    'status': 'approved', 
    'message': None, 
    'progressing': True, 
    'link': 'https://twitter.com/Social_Earning', 
    'date_posted': '2023-04-19T09:29:51.826621Z', '
    rate_needed': 510, 
    'rate_done': 500, 
    'custom_text': '', 
    'order_method': 'API'
  }
}

Update an order status (pause, resume, cancel, stopandrefund).

  • id – Post ID (Required)
  • type – (pause,resume,cancel, stopandrefund) (Required)
curl -X GET 'https://socialearning.org/api/update/order?id=106&type=pause' \
-H 'Authorization: Token YOUR_API_KEY'
{
  "status": true,
  "message": "Order paused successfully",
  "post_id": 106
}

Increase the rate needed for an existing order.

  • id – The id of the order you want you want to continue. (Required)
  • rate_needed – The amount of the audience you need more. (Required)
curl -X POST 'https://socialearning.org/api/increase/audience' \
-H 'Authorization: Token YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data-raw '{
  "id": "106",
  "rate_needed": "50"
}'
{
  "status": true,
  "message": "Order updated successfully",
  "post_id": 106
}

Search from all socialearning orders using ID or link.

  • filt_data – it can be a post link or a post id. (Required)
  • social_media – Service ID (Optional)
curl -X GET 'https://socialearning.org/api/search/order?filt_data=instagram&social_media=1' \
-H 'Authorization: Token YOUR_API_KEY'
{
  "status":true or false,
  "count":9434,
  "total_pages":189,
  "current_page_number":1,
  "next":"https://127.0.0.1:9000/api/search/order?page=2",
  "next_page_number":2,
  "previous":null,
  "previous_page_number":null,
  'data': 
      [
      {
          'id': 106, 
          'Social_Media': 11, 
          'status': 'approved', 
          'message': None, 
          'progressing': True, 
          'link': 'https://twitter.com/Social_Earning/', 
          'date_posted': '2023-04-19T09:29:51.826621Z', 
          'rate_needed': 510, 
          'rate_done': 500, 
          'amount_paid':1000.00
          'amount_refunded':0.00
          'custom_text': 'Good boy \r\n Bad boy Spending', 
          'order_method': 'API'
      }, 
      {
          'id': 105, 
          'Social_Media': 11, 
          'status': 'pending', 
          'message': None, 
          'progressing': False, 
          'link': 'https://twitter.com/Social_Earning/status/1639208170282270720', 
          'date_posted': '2023-04-16T09:03:39.972090Z', 
          'rate_needed': 500, 
          'rate_done': 0, 
          'custom_text': '', 
          'order_method': 'API'
      },
      ]
}

Generates and downloads a PDF report containing all approved task submissions for a specific order.

  • id – The ID of the order (Required)
  • Authorization: Must include a valid Token for an authenticated advertiser
📥 Example Request
    curl -X GET 'https://socialearning.org/api/download_audience_list?id=106' \
    -H 'Authorization: Token YOUR_API_KEY' \
    --output Order_106_audience_list.pdf
    
📄 Example Response
    Content-Type: application/pdf
    Content-Disposition: attachment; filename="Order_106_audience_list.pdf"

    (Binary PDF file returned)
    
🔒 Notes
  • Only authenticated Advertisers can access this endpoint.
  • The response is a direct PDF download, not JSON.
  • The file includes each approved earner’s handle, proof link, submission date, and custom text.
Webhooks

Instead of you polling /order/list for status changes, you can register a webhook URL and we'll POST a JSON payload to it automatically whenever one of your orders changes status. Set this up on your settings page.

Events
event_type value Fires when...
placedA new order is placed
approvedThe order is approved
pausedAn order is paused
resumedA paused order is resumed
finishedAn is completed
stoppedAn order is stopped (and refunded)
rejectedAn order is rejected
cancelledAn order is cancelled
increasedAn order is increased

By default your endpoint receives all five. On your settings page you can narrow this down to only the events you care about — but note that leaving every checkbox unchecked is treated as "send me everything," not "send me nothing."

Every request is sent as POST with a JSON body shaped like this:

{
  "event_type": "placed",
  "order_id": "473153",
  "status": "pending",
  "message": null,
  "progressing": false,
  "link": "http://127.0.0.1:9000/action/posts/pending/list",
  "Social_Media": 1,
  "rate_needed": 65,
  "rate_done": 0,
  "amount_paid": "250.00",
  "amount_refunded": 0.0,
  "custom_text": "jklskfjosgjdsg\r\ndgfdfs\r\n;'gfdl;kgdf'g\r\nasdf;'fsdlfs\r\nafsadlk;sfd;ks af\r\nsafsa\r\nljflsad",
  "order_method": manually,
  "date_posted": "2026-07-24T22:32:39.515Z"
}

Along with these headers on every request:

HeaderDescription
Content-Typeapplication/json
X-Webhook-EventSame value as event_type in the body
X-Webhook-AttemptWhich attempt this is: 1, 2, or 3

Your endpoint should respond with any 2xx status code to acknowledge receipt. Anything else (including no response) is treated as a failed delivery and queues a retry.

  • Each attempt times out after 10 seconds if your server doesn't respond.
  • We make up to 3 attempts total before giving up on a given notification.
AttemptTiming
1stImmediately, when the event happens
2nd~5 minutes after attempt 1 fails
3rd~15 minutes after attempt 2 fails

If the 3rd attempt still fails, we stop trying for that notification and mark it as failed. You'll still be able to see exactly what response (or error) we got back on each attempt, and you can manually resend it any time from your dashboard — a resend counts as the next attempt rather than restarting the count from zero.

For every delivery attempt, whether it succeeds or fails, we keep:

  • The HTTP status code your server returned (if any)
  • The response body your server returned (first 5,000 characters)
  • The connection/timeout error message, if the request itself couldn't complete
Response Codes
Code Description
200OK – Request was successful
400Bad Request – Invalid input
401Unauthorized – Invalid/missing token
404Not Found – Resource does not exist
500Internal Server Error – Try again later