API reference

Workspaces API

Your workspace is your tenant on Audioscrape: the container that owns your datasets, uploads, members, and API keys. The Workspaces API is the canonical surface for your own data — unlike Libraries, which are published content catalogs, these endpoints return everything your workspace contains, including private datasets.

All Workspaces endpoints are members-only: they only ever return workspaces your authenticated key belongs to. Wherever a path contains {workspace}, you can pass either the workspace slug (e.g. acme-research) or its numeric ID — both resolve to the same workspace.

Machine-readable spec: the always-current OpenAPI definition lives in the interactive Swagger UI and at /api/openapi.json.

First call

Start with /api/me

GET /api/me returns your workspace object alongside your user, plan, and key info. Make it the first call in any integration: it verifies your credentials and hands you the workspace slug and ID to use in every path below — no guessing.

GET /api/me
# verify credentials and grab your workspace slug + ID
curl "https://www.audioscrape.com/api/me" \
     -H "Authorization: Bearer YOUR_API_KEY"
Membership

List Workspaces

Returns every workspace the authenticated caller is a member of. Most integrations see exactly one entry; agencies and multi-team accounts may see several.

GET /api/workspaces
# every workspace your key belongs to
curl "https://www.audioscrape.com/api/workspaces" \
     -H "Authorization: Bearer YOUR_API_KEY"
{
  "workspaces": [
    {
      "id": 512,
      "slug": "acme-research",
      "name": "Acme Research",
      "description": null,
      "role": "admin",
      "member_count": 6,
      "is_current": true
    }
  ],
  "total": 1
}
Detail

Get Workspace

Returns one workspace plus all of its datasets — public, workspace-scoped, and private alike. This is the difference from GET /api/libraries/{slug}, which only shows what has been published: as a member you always see the complete picture here.

GET /api/workspaces/{workspace}
# one workspace, all of its datasets — private included
curl "https://www.audioscrape.com/api/workspaces/acme-research" \
     -H "Authorization: Bearer YOUR_API_KEY"
{
  "id": 512,
  "slug": "acme-research",
  "name": "Acme Research",
  "description": null,
  "role": "admin",
  "member_count": 6,
  "datasets": [
    {
      "id": 12,
      "slug": "customer-calls",
      "name": "Customer Calls",
      "description": "Recorded discovery calls, Q2.",
      "visibility": "private",
      "podcast_count": 0,
      "episode_count": 87
    },
    {
      "id": 13,
      "slug": "ai-research",
      "name": "AI Research Podcasts",
      "description": "Long-form interviews with AI researchers.",
      "visibility": "public",
      "podcast_count": 14,
      "episode_count": 412
    }
  ]
}

Path Parameters

Parameter Type Description
workspace string | integer Workspace slug (e.g. acme-research) or numeric workspace ID (e.g. 512) — both are accepted

Members only: workspaces are only visible to their members. Requesting a workspace your API key doesn't belong to returns 404 — we deliberately don't disclose whether it exists.

Contents

List Workspace Datasets

Returns just the datasets of a workspace — the same complete, private-included list as Get Workspace, without the workspace envelope. Use a dataset's numeric id with GET /api/items?dataset_id= to list its content, or with POST /api/datasets/{id}/items to upload into it.

GET /api/workspaces/{workspace}/datasets
# just the datasets, no workspace envelope
curl "https://www.audioscrape.com/api/workspaces/512/datasets" \
     -H "Authorization: Bearer YOUR_API_KEY"
{
  "datasets": [
    {
      "id": 12,
      "slug": "customer-calls",
      "name": "Customer Calls",
      "description": "Recorded discovery calls, Q2.",
      "visibility": "private",
      "podcast_count": 0,
      "episode_count": 87
    }
  ],
  "total": 1
}

Dataset Fields

Field Type Description
id integer Numeric dataset ID (stable, used by /api/datasets/{id} and /api/items?dataset_id=)
slug string URL slug for the dataset
name string Human-readable dataset name
description string | null Optional dataset description
visibility string One of public, workspace, or private — all three are returned to members
podcast_count integer Number of podcasts represented in the dataset
episode_count integer Total items in the dataset