1L First Level Labs / Projects API
API v1

Projects API

The First Level Labs Projects API provides programmatic access to projects, releases and product metrics across the 1L.lc ecosystem.

Base URL
https://api.1l.lc/v1

Authentication

The Projects API uses API keys to authenticate requests. Include your key in the Authorization header using the Bearer authentication scheme.

HTTP
Authorization: Bearer fl_live_xxxxxxxxxxxxxxxxx
Keep your API key private. Never expose secret API keys in client-side applications, public repositories or mobile application binaries.

List projects

Returns a paginated list of projects available to the authenticated account.

GET /projects

Example request

cURL
curl https://api.1l.lc/v1/projects \
  -H "Authorization: Bearer fl_live_xxxxxxxxx"

Response

200 OK
JSON
{
  "object": "list",
  "data": [
    {
      "id": "prj_mobile_01",
      "name": "Mobile Suite",
      "type": "mobile_app",
      "platforms": [
        "ios",
        "android"
      ],
      "status": "active"
    },
    {
      "id": "prj_api_02",
      "name": "Projects API",
      "type": "api_service",
      "platforms": [],
      "status": "active"
    }
  ],
  "has_more": false
}

Get a project

Retrieves detailed information about a single First Level Labs project.

GET /projects/{project_id}

Example request

JavaScript
const response =
  await fetch(
    "https://api.1l.lc/v1/projects/prj_mobile_01",
    {
      headers: {
        Authorization:
          "Bearer fl_live_xxxxxxxxx"
      }
    }
  );

const project =
  await response.json();

console.log(project);
200 OK
JSON
{
  "id": "prj_mobile_01",
  "name": "Mobile Suite",
  "description":
    "A collection of productivity apps.",
  "type": "mobile_app",
  "platforms": [
    "ios",
    "android"
  ],
  "status": "active",
  "created_at":
    "2026-02-14T09:32:18Z",
  "updated_at":
    "2026-08-12T14:21:03Z"
}

Project releases

Returns published releases associated with a project.

GET /projects/{project_id}/releases
cURL
curl https://api.1l.lc/v1/projects/prj_mobile_01/releases \
  -H "Authorization: Bearer fl_live_xxxxxxxxx"
200 OK
JSON
{
  "object": "list",
  "data": [
    {
      "id": "rel_2026_08_12",
      "version": "2.4.0",
      "status": "published",
      "released_at":
        "2026-08-12T14:21:03Z"
    },
    {
      "id": "rel_2026_07_28",
      "version": "2.3.2",
      "status": "published",
      "released_at":
        "2026-07-28T10:04:11Z"
    }
  ]
}

Project metrics

Returns high-level usage metrics for a project. Metrics are aggregated and do not expose individual user information.

GET /projects/{project_id}/metrics
cURL
curl https://api.1l.lc/v1/projects/prj_mobile_01/metrics \
  -H "Authorization: Bearer fl_live_xxxxxxxxx"
200 OK
JSON
{
  "project_id": "prj_mobile_01",
  "period": "30d",
  "metrics": {
    "active_users": 18420,
    "downloads": 42781,
    "api_requests": 981204,
    "crash_free_rate": 99.97
  }
}

Project object

A project represents a software product or service maintained by First Level Labs.

Field Type Description
id string Unique project identifier.
name string Human-readable project name.
description string Short project description.
type string Project category.
platforms array Supported platforms.
status string Current project status.
created_at datetime Project creation timestamp.
updated_at datetime Last modification timestamp.

Release object

A release represents a published version of a project.

Field Type Description
id string Unique release identifier.
version string Semantic version number.
status string Release lifecycle state.
released_at datetime Publication timestamp.

Pagination

List endpoints return a maximum of 50 objects per request. Use the limit and cursor parameters to paginate through larger collections.

GET /projects?limit=25
JSON
{
  "object": "list",
  "data": [],
  "has_more": true,
  "next_cursor":
    "cur_01J9X7..."
}

Errors

The API uses standard HTTP status codes. Error responses include a machine-readable error code and a human-readable message.

JSON
{
  "error": {
    "code": "project_not_found",
    "message":
      "The requested project does not exist."
  }
}
Status Meaning
400 Invalid request.
401 Authentication required or invalid.
403 Insufficient permissions.
404 Resource not found.
429 Rate limit exceeded.
500 Internal server error.