Skip to main content
GET
/
pixelStripeApi
/
projects
curl -G https://api.streampixel.io/pixelStripeApi/projects \
  --data-urlencode "userId=[YOUR_USER_ID]" \
  --data-urlencode "page=1" \
  --data-urlencode "limit=20"
{
  "projects": [
    {
      "id": "664f1a2b3c4d5e6f7a8b9c0d",
      "name": "Showroom Demo",
      "region": "us-east-1",
      "status": "active",
      "createdAt": "2026-02-01T10:15:00.000Z",
      "updatedAt": "2026-04-22T08:42:11.000Z"
    },
    {
      "id": "664f1a2b3c4d5e6f7a8b9c0e",
      "name": "Configurator EU",
      "region": "eu-west-1",
      "status": "active",
      "createdAt": "2026-02-14T14:00:00.000Z",
      "updatedAt": "2026-04-30T19:11:00.000Z"
    }
  ],
  "page": 1,
  "totalPages": 3,
  "totalProjects": 47
}

Documentation Index

Fetch the complete documentation index at: https://docs.streampixel.io/llms.txt

Use this file to discover all available pages before exploring further.

Return a paginated list of every project owned by the authenticated user. This endpoint powers dashboards, CI/CD scripts that need to enumerate environments, and monitoring systems that fan out per-project health checks.

Typical workflow

1

Authenticate

Identify yourself with userId. See the auth note below.
2

Fetch the first page

Call GET /projects?userId={userId} to retrieve page 1 (default page size: 20).
3

Iterate

If totalPages > 1, request subsequent pages by incrementing page until you have everything you need.

Prerequisites

RequirementWhere to get it
User IDFinding your IDs
API KeyAPI authentication (recommended for server-side clients)
This endpoint scopes results by userId in the query string. Treat your userId as semi-secret — never embed it in browser code or public repos. For maximum safety, also pass apiKey when your client supports it, and only call this endpoint from server-side code.

Query parameters

userId
string
required
The ID of the account whose projects you want to list.
page
number
default:"1"
Page number to retrieve, starting at 1.
limit
number
default:"20"
Number of projects per page. Reasonable upper bound is 100.

Response

projects
array
Array of project summary objects. Each item contains:
page
number
Page number returned in this response.
totalPages
number
Total number of pages available given the current limit.
totalProjects
number
Total project count across all pages.
curl -G https://api.streampixel.io/pixelStripeApi/projects \
  --data-urlencode "userId=[YOUR_USER_ID]" \
  --data-urlencode "page=1" \
  --data-urlencode "limit=20"
{
  "projects": [
    {
      "id": "664f1a2b3c4d5e6f7a8b9c0d",
      "name": "Showroom Demo",
      "region": "us-east-1",
      "status": "active",
      "createdAt": "2026-02-01T10:15:00.000Z",
      "updatedAt": "2026-04-22T08:42:11.000Z"
    },
    {
      "id": "664f1a2b3c4d5e6f7a8b9c0e",
      "name": "Configurator EU",
      "region": "eu-west-1",
      "status": "active",
      "createdAt": "2026-02-14T14:00:00.000Z",
      "updatedAt": "2026-04-30T19:11:00.000Z"
    }
  ],
  "page": 1,
  "totalPages": 3,
  "totalProjects": 47
}

Pagination loop

When you need to enumerate every project (e.g., a nightly inventory job), walk every page rather than requesting an unrealistically high limit.
Node.js
const axios = require('axios');

async function listAllProjects(userId) {
  const all = [];
  let page = 1;

  while (true) {
    const { data } = await axios.get(
      'https://api.streampixel.io/pixelStripeApi/projects',
      { params: { userId, page, limit: 50 } }
    );

    all.push(...data.projects);

    if (page >= data.totalPages) break;
    page++;
  }

  return all;
}

listAllProjects('[YOUR_USER_ID]').then((projects) => {
  console.log(`Fetched ${projects.length} projects total.`);
});
Cache the results for a few minutes if you call this repeatedly. Project membership rarely changes minute-to-minute, and avoiding redundant calls keeps you well under fair-use thresholds.

Next

Upload File API

Submit builds to a project via the API.

Webhooks

Get notified when builds change state instead of polling.