Electra.aero Content API

Public, unauthenticated, CORS-open JSON API serving the Electra.aero newsroom — press releases, program milestones and syndicated coverage. This is the default Statamic Content REST API behind the corporate site; Electra neither documents nor supports it. Discovered and verified by probe on 2026-08-12 (124 entries, HTTP 200 anonymous). Only the `news` collection is exposed; every other Statamic resource returns 404.

OpenAPI Specification

electra.aero-content-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Electra.aero Content API (news)
  version: '1.0.0'
  summary: Public, unauthenticated read-only JSON API serving the Electra newsroom.
  description: >-
    Electra.aero publishes no developer program and no API reference. This document was
    DERIVED FROM LIVE PROBES of the Statamic Content REST API that electra.aero serves at
    https://electra.aero/api on 2026-08-12. Every path, parameter, status code and response
    field below was observed on an anonymous request — nothing here is inferred from the
    Statamic product documentation and nothing was invented.

    Only the `news` collection is exposed. Probes of /api/collections/{videos,team,pages,
    careers,blog}/entries, /api/globals, /api/forms, /api/users, /api/assets/{container},
    /api/navs/{nav}/tree and /api/taxonomies/{taxonomy}/terms all returned 404
    {"message":"Not found."}, so they are deliberately omitted rather than documented
    speculatively. Filtering via filter[...] is rejected with 422
    {"message":"Forbidden filter: <field>"}.

    This is an undocumented CMS content surface, not a product API. It is nonetheless
    real, anonymous, CORS-open (access-control-allow-origin: *) and machine-readable.
  contact:
    name: Electra.aero
    url: https://electra.aero/contact
  x-provenance:
    method: probed
    generated: '2026-08-12'
    probed: '2026-08-12'
    probed_by: API Evangelist enrichment pipeline (local-v1)
    provider_published_spec: false
    note: >-
      Electra.aero does not publish this specification. API Evangelist authored it from
      observed responses so the surface is machine-readable; it is a description of
      observed behavior, not a provider contract, and carries no stability guarantee.
servers:
  - url: https://electra.aero/api
    description: Production content API (observed 2026-08-12)
tags:
  - name: news
    description: Electra newsroom and in-the-news entries.
paths:
  /collections/news/entries:
    get:
      operationId: listNewsEntries
      summary: List news entries
      description: >-
        Returns a paginated list of published Electra news entries. Observed 124 total
        entries on 2026-08-12. Anonymous request, HTTP 200, content-type application/json.
      tags: [news]
      security: []
      parameters:
        - name: limit
          in: query
          description: Entries per page. Observed honored (limit=1 and limit=2 both returned exactly that many entries and recalculated meta.last_page).
          required: false
          schema:
            type: integer
            minimum: 1
          example: 25
        - name: page
          in: query
          description: 1-indexed page number. Reflected in meta.current_page and the links object.
          required: false
          schema:
            type: integer
            minimum: 1
          example: 1
        - name: fields
          in: query
          description: >-
            Comma-separated sparse fieldset. Observed - `fields=title,slug` returned entry
            objects containing only `title` and `slug`.
          required: false
          schema:
            type: string
          example: title,slug,date,permalink
        - name: sort
          in: query
          description: >-
            Comma-separated sort fields; a leading `-` reverses. Observed - `sort=-date`
            returned the most recent entry first.
          required: false
          schema:
            type: string
          example: '-date'
      responses:
        '200':
          description: A page of news entries.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntryCollection'
        '422':
          description: >-
            Returned when an unpermitted query filter is supplied. Observed on
            `?filter[featured:is]=true` with body {"message":"Forbidden filter: featured"}.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                message: 'Forbidden filter: featured'
  /collections/news/entries/{id}:
    get:
      operationId: getNewsEntry
      summary: Get a single news entry
      description: Returns one news entry by its Statamic UUID. Observed HTTP 200 for a known id.
      tags: [news]
      security: []
      parameters:
        - name: id
          in: path
          required: true
          description: Entry UUID, as returned in `data[].id` from listNewsEntries.
          schema:
            type: string
            format: uuid
          example: fc720a14-7b91-4222-955b-f6515d87ebff
      responses:
        '200':
          description: The news entry.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Entry'
                required: [data]
        '404':
          description: >-
            No entry with that id. Observed body {"message":"Not found."} — a bare message
            envelope, not RFC 9457 application/problem+json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                message: Not found.
components:
  securitySchemes: {}
  schemas:
    EntryCollection:
      type: object
      description: Laravel-style paginated envelope observed on the list operation.
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Entry'
        links:
          $ref: '#/components/schemas/PaginationLinks'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
      required: [data, links, meta]
    PaginationLinks:
      type: object
      properties:
        first: { type: [string, 'null'], format: uri }
        last: { type: [string, 'null'], format: uri }
        prev: { type: [string, 'null'], format: uri }
        next: { type: [string, 'null'], format: uri }
    PaginationMeta:
      type: object
      properties:
        current_page: { type: integer }
        from: { type: [integer, 'null'] }
        to: { type: [integer, 'null'] }
        last_page: { type: integer }
        per_page: { type: integer }
        total: { type: integer, description: 'Observed 124 on 2026-08-12.' }
        path: { type: string, format: uri }
        links:
          type: array
          description: Rendered pager links (url, label, page, active).
          items:
            type: object
            properties:
              url: { type: [string, 'null'], format: uri }
              label: { type: string }
              page: { type: [integer, 'null'] }
              active: { type: boolean }
    Entry:
      type: object
      description: >-
        Field set observed verbatim on a news entry. Values may be null where the editor
        left the field empty (observed on mount, order, origin_id, source_title, updated_by).
      properties:
        id: { type: string, format: uuid }
        api_url: { type: string, format: uri, description: Self link into this API. }
        edit_url: { type: string, format: uri, description: Statamic control-panel URL (requires provider login). }
        permalink: { type: string, format: uri }
        url: { type: string, description: Site-relative path. }
        uri: { type: string, description: Site-relative path. }
        slug: { type: string }
        title: { type: string }
        summary: { type: [string, 'null'] }
        body_text:
          type: array
          description: Structured body blocks; observed empty for syndicated in-the-news entries.
          items: { type: object }
        date: { type: string, format: date-time }
        last_modified: { type: string, format: date-time }
        updated_at: { type: string, format: date-time }
        updated_by: { type: [object, 'null'] }
        status: { type: string, examples: [published] }
        published: { type: boolean }
        private: { type: boolean }
        featured: { type: boolean }
        featured_image:
          type: [object, 'null']
          description: Asset reference object.
        source_title: { type: [string, 'null'], description: Outlet name for syndicated coverage. }
        source_url: { type: [string, 'null'], format: uri, description: Original article URL for syndicated coverage. }
        collection:
          $ref: '#/components/schemas/Handle'
        blueprint:
          $ref: '#/components/schemas/Handle'
        locale: { type: string, examples: [default] }
        is_entry: { type: boolean }
        mount: { type: [string, 'null'] }
        order: { type: [integer, 'null'] }
        origin_id: { type: [string, 'null'] }
        seo:
          type: object
          properties:
            enabled: { type: boolean }
      required: [id, title, slug, date, status]
    Handle:
      type: object
      properties:
        title: { type: string }
        handle: { type: string }
    Error:
      type: object
      description: >-
        Flat error envelope observed on 404 and 422. Not RFC 9457 — content-type is
        application/json and the body carries a single `message` string.
      properties:
        message: { type: string }
      required: [message]
security: []