# Local artists: API reference

6 endpoints. Base URL `https://princegeorgepulse.ca/api/v1`. Conventions (envelope, paging, fields, formats, limits) are on the [overview](https://princegeorgepulse.ca/developers/). [All endpoints](https://princegeorgepulse.ca/developers/reference/).

## GET /api/v1/artists {#get-artists}

Approved local artist profiles: DJs, bands, musicians, comedians, visual artists, dancers and other talent.

Only approved, live profiles. Private contact details are never exposed; booking goes through each profile page. Profiles marked listedFromPublicInfo were added from the artist's own public pages and can be claimed by them.

- Cache: 5 min
- Source: [PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)](https://princegeorgepulse.ca/artists/)
- Licence: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
- Paginated: `limit` (default 100, max 500) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `group` | query | string | Kind group (see /artists/taxonomy). One of: `djs`, `bands`, `musicians`, `ensembles`, `comedy`, `visual`, `photo`, `dance`, `words`, `other`. Example: `bands`. |
| `kind` | query | string | Kind id (see /artists/taxonomy). Example: `band`. |
| `genre` | query | string | Genre or style id (see /artists/taxonomy). Example: `hip-hop`. |
| `service` | query | string | Service id. |
| `area` | query | string | Area id. |
| `availability` | query | string | Availability. One of: `open`, `limited`, `closed`. |
| `q` | query | string | Text search in name and bio. |
| `limit` | query | integer | Items per page (default 50, max 500 unless noted). Example: `20`. |
| `offset` | query | integer | Items to skip. Use `links.next` to page. Example: `0`. |

Also accepts `fields` (sparse fieldset) and `format` (`json`, `md`, `csv`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/artists"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "slug": "aks-artistic-design",
      "name": "AKS Artistic Design",
      "realName": null,
      "kind": "visual",
      "kindLabel": "Visual artist",
      "group": "visual",
      "featured": false,
      "claimed": false,
      "listedFromPublicInfo": true,
      "genres": [
        "indigenous-art",
        "digital-art",
        "… 1 more"
      ],
      "genreLabels": [
        "Indigenous art",
        "Digital art",
        "… 1 more"
      ],
      "services": [
        "lessons"
      ],
      "…": "6 more keys"
    },
    {
      "slug": "al-rempel",
      "name": "Al Rempel",
      "realName": null,
      "kind": "poet",
      "kindLabel": "Poet or spoken word",
      "group": "words",
      "featured": false,
      "claimed": false,
      "listedFromPublicInfo": true,
      "genres": [
        "poetry"
      ],
      "genreLabels": [
        "Poetry"
      ],
      "services": [],
      "…": "6 more keys"
    },
    "… 78 more"
  ],
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)",
    "total": 80,
    "count": 80,
    "limit": 100,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/artists",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-artists"
  }
}
```

## GET /api/v1/artists/taxonomy {#get-artists-taxonomy}

Artist kinds, kind groups, genres and styles, services, areas and availability.

- Cache: 24 h
- Source: [PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)](https://princegeorgepulse.ca/artists/)
- Licence: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

Also accepts `fields` (sparse fieldset) and `format` (`json`, `md`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/artists/taxonomy"
```

**Example response** (trimmed)

```json
{
  "data": {
    "groups": [
      {
        "id": "djs",
        "label": "DJs",
        "one": "DJ",
        "icon": "Disc3",
        "c": "violet"
      },
      {
        "id": "bands",
        "label": "Bands",
        "one": "band",
        "icon": "Guitar",
        "c": "alert"
      },
      "… 8 more"
    ],
    "kinds": [
      {
        "id": "dj",
        "label": "Solo DJ",
        "group": "djs",
        "family": "dj",
        "ld": "Person",
        "role": "DJ",
        "alias": "DJ name",
        "team": false
      },
      {
        "id": "crew",
        "label": "DJ duo or crew",
        "group": "djs",
        "family": "dj",
        "ld": "MusicGroup",
        "role": "DJ crew",
        "alias": "Crew name",
        "team": true
      },
      "… 15 more"
    ],
    "genres": [
      {
        "id": "open-format",
        "label": "Open format",
        "c": "nechako",
        "f": [
          "dj"
        ]
      },
      {
        "id": "top-40",
        "label": "Top 40",
        "c": "rose",
        "f": [
          "dj",
          "music"
        ]
      },
      "… 67 more"
    ],
    "services": [
      {
        "id": "clubs",
        "label": "Bars and clubs",
        "icon": "Disc3"
      },
      {
        "id": "weddings",
        "label": "Weddings",
        "icon": "Heart"
      },
      "… 11 more"
    ],
    "areas": [
      {
        "id": "prince-george",
        "label": "Prince George"
      },
      {
        "id": "vanderhoof",
        "label": "Vanderhoof"
      },
      "… 7 more"
    ],
    "availability": [
      {
        "id": "open",
        "label": "Taking bookings",
        "c": "spruce"
      },
      {
        "id": "limited",
        "label": "Limited dates",
        "c": "gold"
      },
      "… 1 more"
    ]
  },
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/artists/taxonomy",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-artists-taxonomy"
  }
}
```

## GET /api/v1/artists/{slug} {#get-artists-slug}

One artist profile with bio, socials, featured track and upcoming shows.

- Cache: 5 min
- Source: [PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)](https://princegeorgepulse.ca/artists/)
- Licence: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `slug` | path | string | Artist slug. Required. |

Also accepts `fields` (sparse fieldset) and `format` (`json`, `md`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/artists/aks-artistic-design"
```

**Example response** (trimmed)

```json
{
  "data": {
    "slug": "aks-artistic-design",
    "name": "AKS Artistic Design",
    "realName": null,
    "kind": "visual",
    "kindLabel": "Visual artist",
    "group": "visual",
    "featured": false,
    "claimed": false,
    "listedFromPublicInfo": true,
    "genres": [
      "indigenous-art",
      "digital-art",
      "… 1 more"
    ],
    "genreLabels": [
      "Indigenous art",
      "Digital art",
      "… 1 more"
    ],
    "services": [
      "lessons"
    ],
    "…": "12 more keys"
  },
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/artists/aks-artistic-design",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-artists-slug"
  }
}
```

## GET /api/v1/djs {#get-djs}

Approved DJ profiles (kinds dj, crew and company; /artists lists every kind).

Only approved, live profiles. Private contact details are never exposed; booking goes through each profile page. Profiles marked listedFromPublicInfo were added from the artist's own public pages and can be claimed by them.

- Cache: 5 min
- Source: [PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)](https://princegeorgepulse.ca/artists/)
- Licence: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
- Paginated: `limit` (default 100, max 500) and `offset`; also `format=csv`

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `genre` | query | string | Genre or style id (see /djs/taxonomy). Example: `hip-hop`. |
| `service` | query | string | Service id. |
| `area` | query | string | Area id. |
| `availability` | query | string | Availability. One of: `open`, `limited`, `closed`. |
| `q` | query | string | Text search in name and bio. |
| `limit` | query | integer | Items per page (default 50, max 500 unless noted). Example: `20`. |
| `offset` | query | integer | Items to skip. Use `links.next` to page. Example: `0`. |

Also accepts `fields` (sparse fieldset) and `format` (`json`, `md`, `csv`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/djs"
```

**Example response** (trimmed)

```json
{
  "data": [
    {
      "slug": "atmosphere-entertainment",
      "name": "Atmosphere Entertainment",
      "realName": null,
      "kind": "company",
      "kindLabel": "DJ company",
      "group": "djs",
      "featured": false,
      "claimed": false,
      "listedFromPublicInfo": true,
      "genres": [],
      "genreLabels": [],
      "services": [
        "mc",
        "sound"
      ],
      "…": "6 more keys"
    },
    {
      "slug": "brownsuga",
      "name": "BROWN$UGA",
      "realName": null,
      "kind": "dj",
      "kindLabel": "Solo DJ",
      "group": "djs",
      "featured": false,
      "claimed": false,
      "listedFromPublicInfo": true,
      "genres": [],
      "genreLabels": [],
      "services": [],
      "…": "6 more keys"
    },
    "… 10 more"
  ],
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)",
    "total": 12,
    "count": 12,
    "limit": 100,
    "offset": 0
  },
  "links": {
    "self": "/api/v1/djs",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-djs"
  }
}
```

## GET /api/v1/djs/taxonomy {#get-djs-taxonomy}

Artist kinds, kind groups, genres and styles, services, areas and availability.

- Cache: 24 h
- Source: [PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)](https://princegeorgepulse.ca/artists/)
- Licence: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

Also accepts `fields` (sparse fieldset) and `format` (`json`, `md`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/djs/taxonomy"
```

**Example response** (trimmed)

```json
{
  "data": {
    "groups": [
      {
        "id": "djs",
        "label": "DJs",
        "one": "DJ",
        "icon": "Disc3",
        "c": "violet"
      },
      {
        "id": "bands",
        "label": "Bands",
        "one": "band",
        "icon": "Guitar",
        "c": "alert"
      },
      "… 8 more"
    ],
    "kinds": [
      {
        "id": "dj",
        "label": "Solo DJ",
        "group": "djs",
        "family": "dj",
        "ld": "Person",
        "role": "DJ",
        "alias": "DJ name",
        "team": false
      },
      {
        "id": "crew",
        "label": "DJ duo or crew",
        "group": "djs",
        "family": "dj",
        "ld": "MusicGroup",
        "role": "DJ crew",
        "alias": "Crew name",
        "team": true
      },
      "… 15 more"
    ],
    "genres": [
      {
        "id": "open-format",
        "label": "Open format",
        "c": "nechako",
        "f": [
          "dj"
        ]
      },
      {
        "id": "top-40",
        "label": "Top 40",
        "c": "rose",
        "f": [
          "dj",
          "music"
        ]
      },
      "… 67 more"
    ],
    "services": [
      {
        "id": "clubs",
        "label": "Bars and clubs",
        "icon": "Disc3"
      },
      {
        "id": "weddings",
        "label": "Weddings",
        "icon": "Heart"
      },
      "… 11 more"
    ],
    "areas": [
      {
        "id": "prince-george",
        "label": "Prince George"
      },
      {
        "id": "vanderhoof",
        "label": "Vanderhoof"
      },
      "… 7 more"
    ],
    "availability": [
      {
        "id": "open",
        "label": "Taking bookings",
        "c": "spruce"
      },
      {
        "id": "limited",
        "label": "Limited dates",
        "c": "gold"
      },
      "… 1 more"
    ]
  },
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/djs/taxonomy",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-djs-taxonomy"
  }
}
```

## GET /api/v1/djs/{slug} {#get-djs-slug}

One artist profile with bio, socials, featured track and upcoming shows.

- Cache: 5 min
- Source: [PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)](https://princegeorgepulse.ca/artists/)
- Licence: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

| Parameter | In | Type | Description |
| --- | --- | --- | --- |
| `slug` | path | string | Artist slug. Required. |

Also accepts `fields` (sparse fieldset) and `format` (`json`, `md`).

**Example request**

```bash
curl "https://princegeorgepulse.ca/api/v1/djs/atmosphere-entertainment"
```

**Example response** (trimmed)

```json
{
  "data": {
    "slug": "atmosphere-entertainment",
    "name": "Atmosphere Entertainment",
    "realName": null,
    "kind": "company",
    "kindLabel": "DJ company",
    "group": "djs",
    "featured": false,
    "claimed": false,
    "listedFromPublicInfo": true,
    "genres": [],
    "genreLabels": [],
    "services": [
      "mc",
      "sound"
    ],
    "…": "12 more keys"
  },
  "meta": {
    "source": "PG Pulse local artists directory (profiles submitted or claimed by the artists, or listed from their own public pages, approved by PG Pulse)",
    "sourceUrl": "https://princegeorgepulse.ca/artists/",
    "updatedAt": null,
    "license": "CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)",
    "attribution": "PG Pulse (princegeorgepulse.ca)"
  },
  "links": {
    "self": "/api/v1/djs/atmosphere-entertainment",
    "next": null,
    "docs": "/developers/reference/local-artists/#get-djs-slug"
  }
}
```
