Eurobase Account API

The Account API from Eurobase — 6 operation(s) for account.

GitHub OpenAPI

Operations 8

GET /account/usage Read account usage and plan screen model #
GET /account/usage/resource-contributors Read account usage top resource contributors #
GET /account/billing Read account billing screen model #
GET /account/usage/timeseries Read account usage time-series buckets for visible meters #
GET /account/domains List the custom domains of a workspace #
POST /account/domains Connect a custom domain to a workspace #
PATCH /account/domains/{domainId} Link a custom domain to a project, move it, or unlink it #
DELETE /account/domains/{domainId} Remove a custom domain from the workspace #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/eurobase-dev:eurobase-dev-account-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

eurobase-dev-account-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Eurobase Account API
  version: 0.2.0
  description: Eurobase deployment control-plane API.
servers:
- url: https://api.eurobase.dev
tags:
- name: Account
paths:
  /account/usage:
    get:
      summary: Read account usage and plan screen model
      description: Returns one coherent monthly snapshot containing account meters, resource contributors, projection freshness, and a separate UTC-day action-quota projection. When organizationId is supplied, plan resolution is organization-exclusive and never falls back to the requesting user subscription.
      security:
      - bearerAuth: []
      parameters:
      - in: query
        name: organizationId
        required: false
        schema:
          type: string
        description: Reads the usage and plan screen for an organization the user belongs to.
      - in: query
        name: billingMonth
        required: false
        schema:
          type: string
          pattern: ^\d{4}-\d{2}(-\d{2})?$
        description: Reads a closed billing month when supplied; omitted reads the current month.
      responses:
        '200':
          description: Account usage summary with recorded values and projection status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUsageResponse'
      tags:
      - Account
      operationId: getAccountUsage
      x-operation-id-source: derived
  /account/usage/resource-contributors:
    get:
      summary: Read account usage top resource contributors
      security:
      - bearerAuth: []
      parameters:
      - in: query
        name: organizationId
        required: false
        schema:
          type: string
        description: Reads visible resource contributors for an organization the user belongs to.
      - in: query
        name: billingMonth
        required: false
        schema:
          type: string
          pattern: ^\d{4}-\d{2}(-\d{2})?$
        description: Reads a closed billing month when supplied; omitted reads the current month.
      responses:
        '200':
          description: Account usage top resource contributors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUsageResourceContributorsResponse'
      tags:
      - Account
      operationId: getAccountUsageResourceContributors
      x-operation-id-source: derived
  /account/billing:
    get:
      summary: Read account billing screen model
      security:
      - bearerAuth: []
      parameters:
      - in: query
        name: organizationId
        required: false
        schema:
          type: string
        description: Reads the billing state for an organization the user belongs to. When omitted, the only organization of the user is read; a user without any project reads their Free plan with a null scope.
      responses:
        '200':
          description: Account billing summary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountBillingResponse'
        '400':
          description: Organization is required
        '404':
          description: Organization not found
      tags:
      - Account
      operationId: getAccountBilling
      x-operation-id-source: derived
  /account/usage/timeseries:
    get:
      summary: Read account usage time-series buckets for visible meters
      security:
      - bearerAuth: []
      parameters:
      - in: query
        name: organizationId
        required: false
        schema:
          type: string
        description: Reads visible project usage buckets for an organization the user belongs to.
      - in: query
        name: metricCodes
        required: true
        schema:
          type: string
        description: Comma-separated, distinct usage metric codes to aggregate from usage_counters in one read; series are returned in this order. runtime_average_latency_ms is API-derived from runtime_latency_ms_sum divided by runtime_requests.
      - in: query
        name: range
        required: false
        schema:
          type: string
          enum:
          - 24h
          - 7d
          - 30d
          - 90d
          default: 30d
      - in: query
        name: bucket
        required: false
        schema:
          type: string
          enum:
          - 1h
          - 1d
          default: 1d
      responses:
        '200':
          description: Account usage time-series buckets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUsageTimeSeriesResponse'
        '400':
          description: Invalid or duplicate metric, range, or bucket
        '404':
          description: Organization not found
      tags:
      - Account
      operationId: getAccountUsageTimeseries
      x-operation-id-source: derived
  /account/domains:
    get:
      summary: List the custom domains of a workspace
      description: The workspace owner sees every domain of the workspace; a project member sees the domains linked to their projects. Each domain names the project it serves, if any, lists the two DNS records to add where the domain DNS lives, and shows what public DNS reports.
      parameters:
      - in: query
        name: organizationId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Workspace domains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceDomainsResponse'
        '400':
          description: organizationId missing (organization-id-required)
        '404':
          description: Not a member of this workspace (workspace-not-found)
      tags:
      - Account
      operationId: getAccountDomains
      x-operation-id-source: derived
    post:
      summary: Connect a custom domain to a workspace
      description: Workspace owner only, within the workspace plan limit. With projectId the domain serves that project once its _acme-challenge CNAME is verified and its certificate is issued; without it the domain waits in the workspace and serves nothing.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceDomainRequest'
      responses:
        '201':
          description: Domain connected, waiting for its DNS records
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDomainResponse'
        '400':
          description: organizationId missing (organization-id-required), not a public domain name (project-domain-invalid), a Eurobase address (project-domain-platform-zone) or an invalid projectId (project-domain-target-invalid)
        '403':
          description: Only the workspace owner can manage its domains (workspace-domain-owner-required)
        '409':
          description: Already in the workspace (project-domain-exists), domain limit reached (project-domain-limit-reached) or a project outside the workspace (project-domain-workspace-mismatch)
        '429':
          description: Too many domains connected by this user today
        '503':
          description: Custom domains are not available (project-domains-not-configured)
      tags:
      - Account
      operationId: postAccountDomains
      x-operation-id-source: derived
  /account/domains/{domainId}:
    patch:
      summary: Link a custom domain to a project, move it, or unlink it
      description: Workspace owner only. projectId names a project of the workspace, or null to unlink. DNS records and the certificate stay valid; an active domain serves the linked project production deployment at once, and serves nothing while unlinked.
      parameters:
      - in: path
        name: domainId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - projectId
              properties:
                projectId:
                  type:
                  - string
                  - 'null'
      responses:
        '200':
          description: Domain linked, moved or unlinked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDomainResponse'
        '400':
          description: projectId missing (project-domain-target-required) or invalid (project-domain-target-invalid)
        '403':
          description: Only the workspace owner can manage its domains (workspace-domain-owner-required)
        '404':
          description: Domain not found (project-domain-not-found)
        '409':
          description: A project outside the workspace (project-domain-workspace-mismatch)
        '429':
          description: Too many changes by this user this hour
      tags:
      - Account
      operationId: patchAccountDomainsByDomainId
      x-operation-id-source: derived
    delete:
      summary: Remove a custom domain from the workspace
      parameters:
      - in: path
        name: domainId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Domain removed; it stops serving immediately
          content:
            application/json:
              schema:
                type: object
                required:
                - ok
                properties:
                  ok:
                    type: boolean
        '403':
          description: Only the workspace owner can manage its domains (workspace-domain-owner-required)
        '404':
          description: Domain not found (project-domain-not-found)
      tags:
      - Account
      operationId: deleteAccountDomainsByDomainId
      x-operation-id-source: derived
components:
  schemas:
    UsageMeterRow:
      type: object
      description: Usage meter value returned by the API. Derived account meters such as runtime_average_latency_ms are computed by the API from DB-owned counters and are not accepted as persisted usage metrics.
      required:
      - code
      - label
      - unit
      - value
      properties:
        code:
          type: string
        label:
          type: string
        unit:
          type: string
        value:
          type: string
          pattern: ^[0-9]+(?:\.[0-9]+)?$
    AccountUsageTimeSeries:
      type: object
      required:
      - metricCode
      - unit
      - status
      - points
      properties:
        metricCode:
          type: string
        unit:
          type: string
        status:
          type: string
          enum:
          - available
          - empty
          - unavailable
          - unsupported
        points:
          type: array
          maxItems: 168
          items:
            $ref: '#/components/schemas/AccountUsageTimeSeriesPoint'
    AccountUsageTimeSeriesResponse:
      type: object
      required:
      - range
      - bucket
      - window
      - series
      - generatedAt
      properties:
        range:
          type: string
          enum:
          - 24h
          - 7d
          - 30d
          - 90d
        bucket:
          type: string
          enum:
          - 1h
          - 1d
        window:
          type: object
          required:
          - start
          - end
          properties:
            start:
              type: string
              format: date-time
            end:
              type: string
              format: date-time
        series:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/AccountUsageTimeSeries'
        generatedAt:
          type: string
          format: date-time
    ProjectDomainResponse:
      type: object
      required:
      - domain
      properties:
        domain:
          $ref: '#/components/schemas/ProjectDomain'
    BillingSubscriptionState:
      type: object
      required:
      - state
      - label
      - planCode
      - currentPeriodEnd
      - cancelAtPeriodEnd
      - manageBillingAvailable
      properties:
        state:
          type: string
          enum:
          - free
          - granted
          - processing
          - active
          - canceling
          - past_due
          - unpaid
          - canceled
        label:
          type: string
        planCode:
          type:
          - string
          - 'null'
          enum:
          - free
          - starter
          - pro
          - null
        currentPeriodEnd:
          type:
          - string
          - 'null'
          format: date-time
        cancelAtPeriodEnd:
          type: boolean
        manageBillingAvailable:
          type: boolean
    AccountUsageResourceContributorsResponse:
      type: object
      required:
      - resourceContributors
      properties:
        resourceContributors:
          type: array
          maxItems: 10
          items:
            $ref: '#/components/schemas/AccountUsageResourceContributor'
    AccountUsageTimeSeriesPoint:
      type: object
      required:
      - start
      - end
      - value
      - state
      - final
      properties:
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        value:
          anyOf:
          - type: string
            pattern: ^[0-9]+(?:\.[0-9]+)?$
          - type: 'null'
        state:
          type: string
          enum:
          - available
          - empty
          - unavailable
        final:
          type: boolean
    AccountActionQuota:
      type: object
      description: Current API-owned abuse/action allowance. This is separate from monthly usage meters.
      additionalProperties: false
      required:
      - actionCode
      - metricCode
      - label
      - used
      - limit
      - resetAt
      - state
      - plan
      - recoveryActions
      properties:
        actionCode:
          type: string
          enum:
          - deploy
        metricCode:
          type: string
          enum:
          - deployments
        label:
          type: string
        used:
          type: string
          pattern: ^[0-9]+(?:\.[0-9]+)?$
        limit:
          type: string
          pattern: ^[0-9]+(?:\.[0-9]+)?$
        resetAt:
          type: string
          format: date-time
        state:
          type: string
          enum:
          - available
          - blocked
        plan:
          type: object
          additionalProperties: false
          required:
          - code
          - name
          - pricingVersion
          properties:
            code:
              type: string
            name:
              type: string
            pricingVersion:
              type:
              - string
              - 'null'
        recoveryActions:
          type: array
          uniqueItems: true
          items:
            type: string
            enum:
            - open_usage
            - wait_until_reset
            - request_plan_change
    UsageWindow:
      type: object
      required:
      - code
      - start
      - end
      properties:
        code:
          type: string
          enum:
          - current_month
          - billing_month
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
    AccountUsageResponse:
      type: object
      required:
      - plan
      - scope
      - period
      - lastUpdatedAt
      - status
      - meters
      - runtimeUsage
      - estimatedCost
      - billingState
      - billingSubscription
      - actionQuotas
      - resourceContributors
      - projection
      properties:
        plan:
          type: object
          required:
          - code
          - name
          - pricingVersion
          properties:
            code:
              type: string
            name:
              type: string
            pricingVersion:
              type:
              - string
              - 'null'
        scope:
          type: object
          required:
          - kind
          - organizationId
          - userId
          properties:
            kind:
              type: string
              enum:
              - user
              - organization
            organizationId:
              type:
              - string
              - 'null'
            userId:
              type:
              - string
              - 'null'
        period:
          $ref: '#/components/schemas/UsageWindow'
        lastUpdatedAt:
          type: string
          format: date-time
        status:
          type: string
          enum:
          - available
          - empty
          - unavailable
        meters:
          type: array
          items:
            allOf:
            - $ref: '#/components/schemas/UsageMeterRow'
            - type: object
              required:
              - used
              - limit
              - resetAt
              - state
              - recoveryActions
              properties:
                used:
                  type: string
                  pattern: ^[0-9]+(?:\.[0-9]+)?$
                reserved:
                  type: string
                  description: Build seconds held for builds in progress, separate from consumed usage.
                limit:
                  type:
                  - string
                  - 'null'
                resetAt:
                  type:
                  - string
                  - 'null'
                  format: date-time
                state:
                  type: string
                  enum:
                  - ok
                  - blocked
                  - unavailable
                recoveryActions:
                  type: array
                  items:
                    type: string
        runtimeUsage:
          oneOf:
          - type: object
            required:
            - label
            - usedSmallEquivalentHours
            - includedSmallEquivalentHours
            - remainingSmallEquivalentHours
            - state
            - sourceMeters
            - resetStrategy
            properties:
              label:
                type: string
              usedSmallEquivalentHours:
                type: string
              includedSmallEquivalentHours:
                type: string
              remainingSmallEquivalentHours:
                type: string
              state:
                type: string
                enum:
                - ok
                - blocked
              sourceMeters:
                type: array
                items:
                  type: string
              resetStrategy:
                type: string
          - type: 'null'
        estimatedCost:
          anyOf:
          - $ref: '#/components/schemas/EstimatedCost'
          - type: 'null'
        billingState:
          $ref: '#/components/schemas/BillingUsageState'
        billingSubscription:
          $ref: '#/components/schemas/BillingSubscriptionState'
        actionQuotas:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/AccountActionQuota'
        resourceContributors:
          type: array
          items:
            $ref: '#/components/schemas/AccountUsageResourceContributor'
        projection:
          type: object
          required:
          - status
          - asOf
          - pendingCount
          - pendingCountIsLowerBound
          - quarantinedCount
          - quarantinedCountIsLowerBound
          - oldestPendingAt
          - lagMs
          properties:
            status:
              type: string
              enum:
              - ready
              - applying
              - delayed
              - rebuilding
              - blocked
              - unavailable
            asOf:
              type: string
              format: date-time
            pendingCount:
              type: integer
              minimum: 0
            pendingCountIsLowerBound:
              type: boolean
            quarantinedCountIsLowerBound:
              type: boolean
            quarantinedCount:
              type: integer
              minimum: 0
            oldestPendingAt:
              type:
              - string
              - 'null'
              format: date-time
            lagMs:
              type: integer
              minimum: 0
    EstimatedCost:
      type: object
      required:
      - currency
      - amount
      - label
      - pricingVersion
      properties:
        currency:
          type: string
          enum:
          - EUR
        amount:
          type: string
          pattern: ^[0-9]+\.[0-9]{2}$
        label:
          type: string
        pricingVersion:
          type: string
    ProjectDomain:
      type: object
      required:
      - id
      - hostname
      - status
      - statusReason
      - zone
      - records
      - dnsTargetState
      - certificateState
      - www
      - converging
      - checkedAt
      - activeAt
      - createdAt
      properties:
        id:
          type: string
        hostname:
          type: string
        status:
          type: string
          enum:
          - pending
          - issuing
          - active
          - failed
        statusReason:
          type:
          - string
          - 'null'
          enum:
          - verification_timeout
          - certificate_failed
          - challenge_record_missing
          - challenge_record_removed
          - null
        records:
          type: array
          description: The records to add, each with what public DNS shows. A zone apex also lists its www companion (_acme-challenge.www and www), which redirects to the apex.
          items:
            type: object
            required:
            - type
            - name
            - host
            - value
            - purpose
            - state
            properties:
              type:
                type: string
                enum:
                - CNAME
                - A
              name:
                type: string
                description: Fully qualified record name
              host:
                type:
                - string
                - 'null'
                description: Record name relative to the domain DNS zone (@ for the zone itself); null until the zone is known
              value:
                type:
                - string
                - 'null'
                description: Null only while custom domains are unavailable
              purpose:
                type: string
                enum:
                - verification
                - traffic
              state:
                type: string
                enum:
                - ok
                - waiting
                - elsewhere
                description: 'elsewhere: a traffic record that resolves to an address other than the edge'
              observed:
                type: array
                items:
                  type: string
              aliasValue:
                type: string
                description: 'For an A record: the hostname an ALIAS, ANAME or flattened CNAME may point to instead'
              acceptedValue:
                type: string
                description: 'For the www record of a zone apex: the apex, which the CNAME may point to instead'
        zone:
          type:
          - string
          - 'null'
          description: The DNS zone the domain lives in, once public DNS shows it
        dnsTargetState:
          type: string
          enum:
          - unknown
          - ok
          - elsewhere
          - missing
        certificateState:
          type: string
          enum:
          - waiting
          - issuing
          - issued
        www:
          type:
          - object
          - 'null'
          description: 'A zone apex only: its www companion, which redirects to the apex while the apex certificate covers it. requested: being added to the certificate; issued: covered; failing: covered but not renewing; failed: not covered within 24 hours, so it was removed and the apex renews alone.'
          required:
          - name
          - certificateState
          properties:
            name:
              type: string
            certificateState:
              type: string
              enum:
              - none
              - requested
              - issued
              - failing
              - failed
        converging:
          type: boolean
          description: The domain will change state without anyone acting (pending or issuing)
        checkedAt:
          type:
          - string
          - 'null'
          format: date-time
        activeAt:
          type:
          - string
          - 'null'
          format: date-time
        createdAt:
          type: string
          format: date-time
    BillingUsageState:
      type: object
      required:
      - state
      - label
      - meterAvailability
      - billingMonth
      properties:
        state:
          type: string
          enum:
          - Estimated
          - Finalizing
          - Final
        label:
          type: string
        meterAvailability:
          type: string
          enum:
          - available
          - unavailable
        billingMonth:
          type:
          - string
          - 'null'
    AccountUsageResourceContributor:
      type: object
      required:
      - projectId
      - projectName
      - resourceType
      - resourceLabel
      - meter
      - estimatedCost
      - share
      - updatedAt
      properties:
        projectId:
          type: string
        projectName:
          type: string
        resourceType:
          type: string
        resourceLabel:
          type: string
        meter:
          anyOf:
          - $ref: '#/components/schemas/UsageMeterRow'
          - type: 'null'
        estimatedCost:
          anyOf:
          - $ref: '#/components/schemas/EstimatedCost'
          - type: 'null'
        share:
          type:
          - number
          - 'null'
          minimum: 0
          maximum: 1
        updatedAt:
          type:
          - string
          - 'null'
          format: date-time
    AccountBillingResponse:
      type: object
      required:
      - plan
      - scope
      - billingSubscription
      - canManageBilling
      - lastUpdatedAt
      properties:
        plan:
          type: object
          required:
          - code
          - name
          - pricingVersion
          properties:
            code:
              type: string
            name:
              type: string
            pricingVersion:
              type:
              - string
              - 'null'
        scope:
          type: object
          required:
          - kind
          - organizationId
          - userId
          properties:
            kind:
              type: string
              enum:
              - organization
            organizationId:
              type:
              - string
              - 'null'
            userId:
              type: 'null'
        billingSubscription:
          $ref: '#/components/schemas/BillingSubscriptionState'
        canManageBilling:
          type: boolean
        lastUpdatedAt:
          type: string
          format: date-time
    WorkspaceDomainsResponse:
      type: object
      required:
      - domains
      - canManage
      - linkableProjects
      - availability
      - used
      - limit
      properties:
        canManage:
          type: boolean
          description: Whether the caller owns the workspace and so adds, links, unlinks and removes its domains
        linkableProjects:
          type: array
          description: Workspace projects a domain can be linked to; empty unless the caller owns the workspace
          items:
            type: object
            required:
            - id
            - name
            - hostname
            - repoFullName
            - branch
            properties:
              id:
                type: string
              name:
                type: string
              hostname:
                type:
                - string
                - 'null'
              repoFullName:
                type:
                - string
                - 'null'
              branch:
                type:
                - string
                - 'null'
        used:
          type: integer
          description: Domains the workspace has, linked or not; the limit applies to this count
        domains:
          type: array
          items:
            allOf:
            - $ref: '#/components/schemas/ProjectDomain'
            - type: object
              required:
              - project
              properties:
                project:
                  type:
                  - object
                  - 'null'
                  description: The project the domain serves; null while it is not linked
                  required:
                  - id
                  - name
                  - hostname
                  - repoFullName
                  - branch
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    hostname:
                      type:
                      - string
                      - 'null'
                      description: The project production hostname the domain serves
                    repoFullName:
                      type:
                      - string
                      - 'null'
                    branch:
                      type:
                      - string
                      - 'null'
        availability:
          type: string
          enum:
          - available
          - unavailable
        limit:
          type: integer
          description: 'Domains this workspace may have: 1 on Free, 10 on paid plans'
    WorkspaceDomainRequest:
      type: object
      required:
      - organizationId
      - hostname
      properties:
        organizationId:
          type: string
        hostname:
          type: string
          example: example.com
        projectId:
          type:
          - string
          - 'null'
          description: The project the domain serves; omitted or null to add it unlinked
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
    sessionCookie:
      type: apiKey
      in: cookie
      name: __Host-eurobase_session
    csrfHeader:
      type: apiKey
      in: header
      name: X-Eurobase-CSRF