Documentation 29
Bitbucket quickstart · 3 min read
Keep bitbucket.js. Change one line.
Everything you need for your first call is on this screen. Paths mirror api.bitbucket.org/2.0, so your client code stays exactly where it is.
Coverage, hosts and pinned snapshots for Bitbucket — 106 of 161 read surfaces served and verified.
01 / Base URL
One host, provider paths.
Point your Bitbucket client at https://bb.sandboxapis.dev. Paths mirror api.bitbucket.org/2.0 — in-body pagination envelopes, fields partial responses, braced UUIDs and all.
curl https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon02 / Drop in your client
bitbucket.js works unmodified.
The only change is the base URL.
import { Bitbucket } from "bitbucket";
const bitbucket = new Bitbucket({ baseUrl: "https://bb.sandboxapis.dev/2.0" });
const { data: repo } = await bitbucket.repositories.get({
workspace: "olympus-labs",
repo_slug: "parthenon",
});
console.log(repo.full_name); // "olympus-labs/parthenon"
const { data: prs } = await bitbucket.pullrequests.list({
workspace: "olympus-labs",
repo_slug: "parthenon",
state: "MERGED",
});The Python client is proved end to end rather than described: atlassian-python-api's exact snippet is executed against https://bb.sandboxapis.dev by a script that checks its output. Verified quickstarts →
03 / A real response
Live from the universe.
{
"type": "repository",
"uuid": "{1209232b-6a2f-4a49-94b2-41cd95b086e3}",
"full_name": "olympus-labs/parthenon",
"name": "parthenon",
"slug": "parthenon",
"description": "Monorepo for the Olympus Labs developer platform — the temple everything is built on.",
"scm": "git",
"is_private": true,
"fork_policy": "allow_forks",
"language": "",
"size": 313812,
"has_issues": false,
"has_wiki": false,
"mainbranch": {
"name": "main",
"type": "branch"
},
"owner": {
"type": "team",
"uuid": "{9419004a-3c74-4560-9f80-dd6c6e20f042}",
"username": "olympus-labs",
"display_name": "Olympus Labs",
"links": {
"self": {
"href": "https://bb.sandboxapis.dev/2.0/workspaces/olympus-labs"
},
"html": {
"href": "https://bb.sandboxapis.dev/olympus-labs"
},
"avatar": {
"href": "https://bb.sandboxapis.dev/2.0/avatars/olympus-labs"
}
}
},
"workspace": {
"type": "workspace",
"uuid": "{9419004a-3c74-4560-9f80-dd6c6e20f042}",
"name": "Olympus Labs",
"slug": "olympus-labs",
"links": {
"self": {
"href": "https://bb.sandboxapis.dev/2.0/workspaces/olympus-labs"
},
"html": {
"href": "https://bb.sandboxapis.dev/olympus-labs"
},
"avatar": {
"href": "https://bb.sandboxapis.dev/2.0/avatars/olympus-labs"
}
}
},
"project": {
"type": "project",
"key": "OLY",
"uuid": "{b2a8b192-da74-46f8-9505-0e241b6c7baa}",
"name": "Olympus Labs",
"links": {
"html": {
"href": "https://bb.sandboxapis.dev/olympus-labs/workspace/projects/OLY"
},
"avatar": {
"href": "https://bb.sandboxapis.dev/2.0/avatars/olympus-labs"
}
}
},
"created_on": "2026-04-26T17:20:00.982407+00:00",
"updated_on": "2026-07-25T17:19:00.495670+00:00",
"links": {
"self": {
"href": "https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon"
},
"html": {
"href": "https://bb.sandboxapis.dev/olympus-labs/parthenon"
},
"avatar": {
"href": "https://bb.sandboxapis.dev/2.0/avatars/olympus-labs/parthenon"
},
"pullrequests": {
"href": "https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/pullrequests"
},
"commits": {
"href": "https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/commits"
},
"forks": {
"href": "https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/forks"
},
"watchers": {
"href": "https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/watchers"
},
"downloads": {
"href": "https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/downloads"
},
"hooks": {
"href": "https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/hooks"
},
"clone": [
{
"name": "https",
"href": "https://bb.sandboxapis.dev/olympus-labs/parthenon.git"
},
{
"name": "ssh",
"href": "ssh://git@bb.sandboxapis.dev/olympus-labs/parthenon.git"
}
]
}
}04 / Source browsing
The repository has real files.
Repositories carry actual source, served through Bitbucket's own src API — which, unlike the other hosts, returns raw bytes for a file and the paginated tree envelope for a directory.
# redirects to the default branch's tree root
curl -L https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/src
# a directory listing, then the raw file, then its metadata
curl https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/src/main/src
curl https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/src/main/README.md
curl "https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/src/main/README.md?format=meta"
# the commits that actually changed a path
curl https://bb.sandboxapis.dev/2.0/repositories/olympus-labs/parthenon/filehistory/main/README.mdThe same bytes are served by GitHub's contents and GitLab's repository/files — one canonical repository, three dialects.
05 / Pin a snapshot
Deterministic CI.
Same env-var swap, a *.snap. host — byte-identical on every request.
# reproducible in CI
export BITBUCKET_BASE_URL=https://bb-v2.snap.sandboxapis.dev/2.0Tour the universe → · Coverage manifest → · Versioning & pinning →