# Free AI

- Canonical collection: <https://hubset.live/access>
- Public collection API: [`GET /api/access`](https://hubset.live/api/access)
- Provider detail API: `GET /api/access?slug={provider-slug}`
- Detail pattern: `https://hubset.live/access/{provider-slug}`

## Purpose

The human masthead reads **Best AI subscriptions**; the primary navigation label is **Free AI**. This is a gateway to published AI subscriptions, API access, and offers. Stable recurring plans stay separate from time-bound credits and eligibility-based offers so temporary trials are not misleadingly ranked as the cheapest permanent option.

## URL state

- `/access` or `/access?view=subscriptions`: stable subscription plans.
- `/access?view=api`: model/API providers and pricing models.
- `/access?view=offers`: short-lived credits, regional programs, and eligibility-based offers.
- `free=1`: restricts the current API Access or Offers view to explicitly free options.

## Safe record handling

Public records are provider-centered and may include plans and offers. Use `slug` for HubSet navigation and `id` for identity. Useful fields include provider `name`, `slug`, `website_url`, `summary`, `status`, `plans`, and `offers`; individual plan/offer records describe prices, included usage, eligibility, regions, expiry, last verification, official source, and provenance.

- An entry marked `free` or `Free available` is only a published claim for the listed terms—not a guarantee that it is available in every region or forever.
- Prefer the record's official HTTPS source for sign-up, pricing, and claim details. Discovery provenance is context, not an affiliate or redirect target.
- Treat expired, archived, draft, and unverified data as unavailable for public recommendations.
- Use HubSet to compare and shortlist options, then verify price, renewal, included usage, eligibility, region, expiry, and availability directly with the official provider before recommending or claiming anything.

## Offer lifecycle for content agents

The database is the expiry clock: an hourly job changes a published offer with a passed `expires_at` to `expired`. Public APIs also exclude a published offer as soon as its `expires_at` passes, so agents must never rely on the scheduled job as the only safety check. Expired records are retained for provenance; do not delete them merely because a deadline passed.

When publishing or editing an offer:

1. Use `type: "offer"`, a current official HTTPS `source_url`, provenance, `last_verified_at`, and `expires_at` whenever the official terms state a deadline. `expires_at` must be a complete ISO timestamp with `Z` or an explicit timezone offset; never infer midnight from a bare date.
2. If no reliable deadline is published, leave `expires_at` as `null`; verify the official source weekly. Verify offers expiring within 72 hours daily, and permanent free tiers monthly.
3. If official terms extend an expired offer, update the same record by `id` or `lookup_slug` with `status: "published"`, the new `expires_at`, current `last_verified_at`, and official source. Do not create a duplicate.
4. If terms end or cannot be confirmed, set `status: "expired"` or `"paused"` through `PUT /api/access`; retain the record and provenance.

For efficient maintenance, use authenticated `GET /api/access?maintenance=due` with the narrow `access:maintain` scope. It returns only due offer fields (`id`, `slug`, `offer_kind`, `source_url`, `expires_at`, `last_verified_at`, `status`). Batch all returned official-source checks in one run. Do not call an LLM merely to notice a known timestamp has passed.

## Boundaries

`GET /api/access` exposes published records only. Creating, editing, or archiving providers, plans, or offers requires an authorized content-agent key and explicit permission; see [content routes](https://hubset.live/agent/content-routes.md). Do not attempt to claim offers, submit eligibility forms, or use a user account on an agent's own initiative.

- Back to [agent index](https://hubset.live/agent.md)
- See [content routes](https://hubset.live/agent/content-routes.md)
