Developer Reference

Big Brains Partner API

Integrate Big Brains internships, job postings and courses into your own platform. A read-only REST API that returns JSON.

Introduction

The Big Brains Partner API lets approved partners list and display our internships, job postings and courses inside their own products. All endpoints are read-only and return JSON.

Base URL

https://api.bigbrainss.com/partner/v1

To request access, email support@bigbrainslearning.com with your platform name, a short description of the integration, and your expected request volume.

Authentication

Every request needs an API key, sent in the X-API-Key header. A Bearer token in the Authorization header also works.

curl https://api.bigbrainss.com/partner/v1/ping \
  -H "X-API-Key: bbl_live_your_key_here"

# Or with a Bearer token:
curl https://api.bigbrainss.com/partner/v1/ping \
  -H "Authorization: Bearer bbl_live_your_key_here"

Keep your key secret

Call this API from your server, never from browser or mobile client code — a key shipped to a client can be extracted. If a key is exposed, contact us and we will revoke it.

Rate limits

The default allowance is 60 requests per minute per key. Every response carries the current allowance:

  • X-RateLimit-Limit — your per-minute ceiling
  • X-RateLimit-Remaining — requests left in the current window
  • Retry-After — seconds to wait (sent only with a 429)

Exceeding the limit returns 429. We recommend caching responses for 5–15 minutes: listings change slowly, and it keeps you well inside the limit. Need a higher ceiling? Just ask.

Endpoints

Internships

GET/internships

Lists all open internships, newest first.

ParameterTypeDescription
pageintegerPage number. Defaults to 1.
limitintegerItems per page, 1–100. Defaults to 20.
categorystringFrontend, Backend, FullStack, Mobile, AI/ML, Design, DevOps, QA or Other.
paidbooleantrue for paid only, false for unpaid.
searchstringMatches title and description.
GET/internships/:id

A single internship by id.

Job postings

GET/careers

Lists all open job postings, newest first.

ParameterTypeDescription
pageintegerPage number. Defaults to 1.
limitintegerItems per page, 1–100. Defaults to 20.
typestringfull-time, part-time, internship or contract.
locationstringPartial match, e.g. “Lahore” or “Remote”.
searchstringMatches title and description.
GET/careers/:id

A single job posting by id.

Courses

GET/courses

Lists published courses, newest first.

ParameterTypeDescription
pageintegerPage number. Defaults to 1.
limitintegerItems per page, 1–100. Defaults to 20.
freebooleantrue for free courses only.
searchstringMatches title and summary.
GET/courses/:id

A single published course by id.

Utility

GET/categories

The valid values for the category and type filters, so you can build filter UI without hardcoding them.

GET/ping

Confirms your key works and reports your rate limit. Useful when wiring up the integration.

Response format

List endpoints return a data array plus a meta object for pagination. Single-item endpoints return one data object.

{
  "data": [
    {
      "id": "68b3f2a1c4e5d6f7a8b9c0d1",
      "title": "Frontend Development Intern",
      "description": "Build responsive interfaces with React...",
      "category": "Frontend",
      "paid": true,
      "stipend": {
        "amount": 25000,
        "min": 20000,
        "max": 30000,
        "type": "monthly",
        "currency": "PKR"
      },
      "durationWeeks": 8,
      "learningOutcomes": [
        "Build production React components",
        "Work with REST APIs"
      ],
      "thumbnailUrl": "https://cdn.bigbrainss.com/internships/frontend.png",
      "url": "https://www.bigbrainslearning.com/internships/68b3f2a1c4e5d6f7a8b9c0d1",
      "postedAt": "2026-08-14T09:30:00.000Z"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 37,
    "totalPages": 2,
    "hasMore": true
  }
}

Errors

Errors use standard HTTP status codes and return an error slug with a human-readable message.

StatusErrorMeaning
400invalid_idThe id in the path is malformed.
401missing_api_keyNo API key was sent.
401invalid_api_keyThe key is unknown or revoked.
401expired_api_keyThe key passed its expiry date.
404not_foundNo such item, or it is no longer public.
429rate_limit_exceededToo many requests — check Retry-After.
500server_errorSomething failed on our side.
{
  "error": "rate_limit_exceeded",
  "message": "Rate limit of 60 requests per minute exceeded. Retry in 24s."
}

Code examples

cURL

# Paid frontend internships, 10 per page
curl "https://api.bigbrainss.com/partner/v1/internships?category=Frontend&paid=true&limit=10" \
  -H "X-API-Key: bbl_live_your_key_here"

Node.js

const API_KEY = process.env.BIG_BRAINS_API_KEY;
const BASE = "https://api.bigbrainss.com/partner/v1";

async function getInternships({ category, page = 1 } = {}) {
  const params = new URLSearchParams({ page, limit: 20 });
  if (category) params.set("category", category);

  const res = await fetch(`${BASE}/internships?${params}`, {
    headers: { "X-API-Key": API_KEY },
  });

  if (!res.ok) {
    const err = await res.json();
    throw new Error(`${res.status} ${err.error}: ${err.message}`);
  }

  const { data, meta } = await res.json();
  return { internships: data, meta };
}

const { internships, meta } = await getInternships({ category: "Backend" });
console.log(`${internships.length} of ${meta.total}`);

Python

import os
import requests

API_KEY = os.environ["BIG_BRAINS_API_KEY"]
BASE = "https://api.bigbrainss.com/partner/v1"

def get_internships(category=None, page=1):
    params = {"page": page, "limit": 20}
    if category:
        params["category"] = category

    res = requests.get(
        f"{BASE}/internships",
        params=params,
        headers={"X-API-Key": API_KEY},
        timeout=10,
    )
    res.raise_for_status()
    body = res.json()
    return body["data"], body["meta"]

internships, meta = get_internships(category="AI/ML")
print(f"{len(internships)} of {meta['total']}")

Usage terms

Attribution

Display “Powered by Big Brains Learning” alongside our content, linking back to the original listing on bigbrainslearning.com.

Link back

Every listing you display must link to its url from the API response, so applications complete on our platform.

No resale

Data from this API may not be resold, sublicensed, or redistributed as a dataset.

Caching

Cache responses for up to 24 hours. Do not store our content indefinitely — listings close and content changes.

Accuracy

Do not alter listing details (stipend, duration, requirements). Present them as returned.

Fair use

Stay within your rate limit. Do not scrape endpoints not documented here.

Revocation

We may revoke a key at any time for breach of these terms, with notice where practical.

These terms sit alongside our Privacy Policy. We may update them; material changes will be emailed to the address on your key.

Support

Questions about the API, a higher rate limit, or a bug to report? Email support@bigbrainslearning.com. Include your key prefix (the bbl_live_… part) — never the full key.