> ## Documentation Index
> Fetch the complete documentation index at: https://docs.syrto.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Spider graph

> Every axis is a 1-5 value relative to the company's market; read it against the axis marketValue. Price: 50 credits including one year; each further year returned costs 10.



## OpenAPI

````yaml api-reference/openapi.standard.json GET /companies/{id}/spider
openapi: 3.1.0
info:
  title: Syrto API - standard endpoints
  version: 1.7.0
  description: >-
    Financial, corporate and market data on Italian companies.


    Every call answers `200 { data, meta }`; `meta.usage.quantity` is what the
    call consumed, in

    credits, and `meta.warnings` lists any non-fatal caveats (empty when there
    are none). Every field

    is always present and unknown values are null. Percentages are fractions
    (0.15 = 15%).


    **Authentication.** Every call needs an API key, sent as `Authorization:
    Bearer sk_...` over

    HTTPS - never in a URL. Keys are scoped to your organization: admins create
    and revoke them in the

    Syrto dashboard (https://dashboard.syrto.ai/api-keys). A missing or
    unrecognised key is a 401

    (`missing_api_key`, `invalid_api_key`); a 503 `auth_unavailable` means the
    key could not be

    checked right now, so retry with backoff rather than rotating it.


    **Billing basis.** negativities, rna and structure bill once per legal
    entity: the individual and

    consolidated records of the same company count once. Every other endpoint
    bills per record (or per

    call), so individual and consolidated count separately. A tax id always
    resolves to a single record

    (`statementBasis`, individual by default): a company is billed twice only
    when both of its

    companyIds are passed. A market call is priced per call, whatever the size
    of its set: omitting

    `filters` and `seedId`, or sending `filters: {}`, is the whole of Italy, at
    the same price.

    notFound entries are never billed, and neither is any error.
servers:
  - url: https://api.syrto.ai
security: []
tags:
  - name: Company data
    description: Identity, risk flags, state aid and branches of known companies.
  - name: Governance
    description: Ownership, officers, beneficial owners and group.
  - name: Financials
    description: Statement items, reclassified statements, indices and spider graph.
  - name: Composite
    description: Comparable companies.
  - name: Search
    description: The companies of a filtered set, row by row.
  - name: Market
    description: Aggregates over a filtered set.
  - name: Catalog
    description: Free reference data.
paths:
  /companies/{id}/spider:
    get:
      tags:
        - Financials
      summary: >-
        Spider graph: four thematic profiles, twenty axes, with the metrics
        behind each axis.
      description: >-
        Every axis is a 1-5 value relative to the company's market; read it
        against the axis marketValue. Price: 50 credits including one year; each
        further year returned costs 10.
      operationId: company-spider
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 100
            description: >-
              A companyId (Syrto id of one statement record, starts with `Zm86`)
              or a tax id (11-digit partita IVA or 16-character codice fiscale).
              A tax id resolves to the record selected by `statementBasis`.
            example: '02579690039'
          required: true
          description: >-
            A companyId (Syrto id of one statement record, starts with `Zm86`)
            or a tax id (11-digit partita IVA or 16-character codice fiscale). A
            tax id resolves to the record selected by `statementBasis`.
          name: id
          in: path
        - schema:
            type: array
            items:
              type: string
              enum:
                - management_style
                - economic_performance
                - resources_investments
                - cash_flow_spider_graph
            minItems: 1
            maxItems: 4
            description: Comma-separated template slugs; omitted = all four.
          required: false
          description: Comma-separated template slugs; omitted = all four.
          style: form
          explode: false
          name: templates
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 10
            description: Years of history, newest first (default 1).
          required: false
          description: Years of history, newest first (default 1).
          name: years
          in: query
        - schema:
            type: string
            enum:
              - individual
              - consolidated
            description: >-
              Which statement a tax id resolves to: `individual` (default) is
              the one the company filed for itself, `consolidated` the group's.
              The two can differ by orders of magnitude. Ignored for a
              companyId, which already names one record.
          required: false
          description: >-
            Which statement a tax id resolves to: `individual` (default) is the
            one the company filed for itself, `consolidated` the group's. The
            two can differ by orders of magnitude. Ignored for a companyId,
            which already names one record.
          name: statementBasis
          in: query
        - schema:
            type: string
            enum:
              - it
              - en
            description: >-
              Language of metric names, labels and descriptions (never of field
              names or slugs). Omitted: the account's default.
          required: false
          description: >-
            Language of metric names, labels and descriptions (never of field
            names or slugs). Omitted: the account's default.
          name: language
          in: query
      responses:
        '200':
          description: >-
            Spider graph: four thematic profiles, twenty axes, with the metrics
            behind each axis.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/CompanySpider'
                  meta:
                    $ref: '#/components/schemas/ResponseMeta'
                required:
                  - data
                  - meta
        '401':
          description: missing_api_key | invalid_api_key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: credits_exhausted | limit_reached
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: client_not_configured | not_entitled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: unknown_endpoint | not_found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: invalid_params
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: rate_limited
          headers:
            Retry-After:
              description: >-
                Seconds to wait before retrying. Neither a 429 nor a 504 is
                billed. A 504 whose query had reached the data service leaves it
                running, and its answer is cached, so the same call after this
                delay is usually fast.
              schema:
                type: integer
                minimum: 0
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: internal_error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: upstream_error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: auth_unavailable | entitlement_unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '504':
          description: upstream_timeout
          headers:
            Retry-After:
              description: >-
                Seconds to wait before retrying. Neither a 429 nor a 504 is
                billed. A 504 whose query had reached the data service leaves it
                running, and its answer is cached, so the same call after this
                delay is usually fast.
              schema:
                type: integer
                minimum: 0
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    CompanySpider:
      type: object
      properties:
        company:
          $ref: '#/components/schemas/CompanyYears'
        methodology:
          $ref: '#/components/schemas/SpiderMethodology'
        years:
          type: array
          items:
            $ref: '#/components/schemas/SpiderYear'
      required:
        - company
        - methodology
        - years
      description: >-
        Every axis is RELATIVE to the company's market, never an absolute grade:
        read it against its marketValue.
    ResponseMeta:
      type: object
      properties:
        requestId:
          type: string
        endpoint:
          type: string
        usage:
          $ref: '#/components/schemas/Usage'
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/Warning'
          description: Empty when there are none.
      required:
        - requestId
        - endpoint
        - usage
        - warnings
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - missing_api_key
                - invalid_api_key
                - credits_exhausted
                - limit_reached
                - client_not_configured
                - not_entitled
                - unknown_endpoint
                - not_found
                - payload_too_large
                - unsupported_media_type
                - invalid_params
                - rate_limited
                - internal_error
                - upstream_error
                - auth_unavailable
                - entitlement_unavailable
                - upstream_timeout
            message:
              type: string
            requestId:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  path:
                    type: string
                  message:
                    type: string
                required:
                  - path
                  - message
          required:
            - code
            - message
            - requestId
      required:
        - error
    CompanyYears:
      allOf:
        - $ref: '#/components/schemas/CompanyHeader'
        - type: object
          properties:
            yearsReturned:
              type: array
              items:
                type: integer
              description: Newest first.
          required:
            - yearsReturned
    SpiderMethodology:
      type: object
      properties:
        version:
          type: string
          example: spider-1.1
        scaleMin:
          type: number
          enum:
            - 1
        scaleMax:
          type: number
          enum:
            - 5
        referenceMarket:
          type: string
        interpretation:
          type: string
        aggregation:
          type: string
        citation:
          type: string
          description: Ready to quote in a report, method version included.
        url:
          type: string
          format: uri
      required:
        - version
        - scaleMin
        - scaleMax
        - referenceMarket
        - interpretation
        - aggregation
        - citation
        - url
      description: Versioned; changes only when the method does.
    SpiderYear:
      type: object
      properties:
        period:
          $ref: '#/components/schemas/FinancialPeriod'
        marketReference:
          $ref: '#/components/schemas/MarketReference'
        summary:
          $ref: '#/components/schemas/SpiderSummary'
        templates:
          type: array
          items:
            $ref: '#/components/schemas/SpiderTemplate'
      required:
        - period
        - marketReference
        - summary
        - templates
    Usage:
      type: object
      properties:
        quantity:
          type: number
        unit:
          type: string
      required:
        - quantity
        - unit
    Warning:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
      required:
        - code
        - message
    CompanyHeader:
      type: object
      properties:
        companyId:
          type: string
          description: >-
            Syrto id of this statement record. Individual and consolidated
            differ.
        legalName:
          type:
            - string
            - 'null'
        taxId:
          type:
            - string
            - 'null'
          description: Codice fiscale / partita IVA.
        consolidated:
          type: boolean
          description: Whether these figures are the consolidated (group) statement.
      required:
        - companyId
        - legalName
        - taxId
        - consolidated
    FinancialPeriod:
      type: object
      properties:
        year:
          type: integer
        financialStatementDate:
          type:
            - string
            - 'null'
          format: date
          description: >-
            Date of the financial statement the figures come from: the financial
            year end it is made up to (data di chiusura dell'esercizio - 31
            December for most companies, 30 June for a club closing in June).
            Cite it when reporting a discrepancy.
        sizeBand:
          anyOf:
            - $ref: '#/components/schemas/SizeBand'
            - type: 'null'
        employeeCount:
          type:
            - integer
            - 'null'
      required:
        - year
        - financialStatementDate
        - sizeBand
        - employeeCount
    MarketReference:
      type: object
      properties:
        naceClass:
          type:
            - string
            - 'null'
          description: The same 4-digit NACE class as the company.
          example: '44.23'
        size:
          anyOf:
            - $ref: '#/components/schemas/SizeBand'
            - type: 'null'
          description: The same size class as the company, that year.
        geographicArea:
          type:
            - object
            - 'null'
          properties:
            level:
              type: string
              enum:
                - nuts1
                - country
              description: >-
                `nuts1` (the macro area) for sizes XS, S and M; `country` for
                size L.
            code:
              type: string
              example: ITH
          required:
            - level
            - code
          description: The same macro area as the company, or its country for size L.
      required:
        - naceClass
        - size
        - geographicArea
      description: >-
        The market a marketValue is computed on: companies with the same 4-digit
        NACE class and size class in the same year, within the company's NUTS 1
        macro area - or its whole country when the company is size L. Fields are
        null when the company lacks the attribute (and its market values are
        then null too).
    SpiderSummary:
      type: object
      properties:
        overall:
          type:
            - number
            - 'null'
          minimum: 1
          maximum: 5
          description: Mean of the template values; every template weighs the same.
        byTemplate:
          type: array
          items:
            $ref: '#/components/schemas/SpiderTemplateSummary'
      required:
        - overall
        - byTemplate
    SpiderTemplate:
      type: object
      properties:
        slug:
          $ref: '#/components/schemas/SpiderTemplateSlug'
        name:
          type: string
        value:
          type:
            - number
            - 'null'
          minimum: 1
          maximum: 5
          description: Mean of the template's axes.
        axes:
          type: array
          items:
            $ref: '#/components/schemas/SpiderAxis'
      required:
        - slug
        - name
        - value
        - axes
    SizeBand:
      type: string
      enum:
        - XS
        - S
        - M
        - L
      description: >-
        EU size class of the statement record (not of the group, unless
        consolidated).
    SpiderTemplateSummary:
      type: object
      properties:
        slug:
          $ref: '#/components/schemas/SpiderTemplateSlug'
        name:
          type: string
        value:
          type:
            - number
            - 'null'
          minimum: 1
          maximum: 5
      required:
        - slug
        - name
        - value
    SpiderTemplateSlug:
      type: string
      enum:
        - management_style
        - economic_performance
        - resources_investments
        - cash_flow_spider_graph
    SpiderAxis:
      type: object
      properties:
        slug:
          type: string
        name:
          type: string
        value:
          type:
            - number
            - 'null'
          minimum: 1
          maximum: 5
          description: Mean of the component scores (not an integer).
        marketValue:
          type:
            - number
            - 'null'
          description: >-
            The same axis for the company's market (the year's
            `marketReference`): the reference to read `value` against.
        components:
          type: array
          items:
            $ref: '#/components/schemas/SpiderComponent'
      required:
        - slug
        - name
        - value
        - marketValue
        - components
    SpiderComponent:
      type: object
      properties:
        slug:
          type: string
          description: Metric slug; some are outside the 55 of analysis.
        name:
          type: string
        unit:
          anyOf:
            - $ref: '#/components/schemas/MetricUnit'
            - type: 'null'
        formulaLatex:
          type:
            - string
            - 'null'
          description: >-
            How the metric is computed, as a LaTeX formula (render it). Null for
            items read directly from the statement.
        value:
          type:
            - number
            - 'null'
        score:
          type:
            - integer
            - 'null'
          minimum: 1
          maximum: 5
          description: >-
            1-5 against the company's market, already direction-normalized (5 is
            always best). Null when unscored; it then does not count towards the
            axis.
      required:
        - slug
        - name
        - unit
        - formulaLatex
        - value
        - score
    MetricUnit:
      type: string
      enum:
        - eur
        - pct
        - ratio
        - days
        - eur_per_head
        - count
      description: >-
        `pct` is a fraction, never multiplied: 0.15 is 15%, and it may exceed 1
        or be negative. `eur_per_head` is euro per employee.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Org-scoped WorkOS API key (sk_...), sent as `Authorization: Bearer
        <key>`. Admins create and revoke keys in the Syrto dashboard:
        https://dashboard.syrto.ai/api-keys

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.