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

# Get an employer’s OSHA profile

> An employer’s workplace safety record in one read. Per Form 300A year: whether OSHA has a filing, headcount, hours, cases and the TRC and DART rates (cases × 200,000 ÷ hours). Over the window: inspections by type, citations by type, penalties, severe injuries and fatalities. Every figure carries the path of the OSHA rows behind it. Pass siteId for one workplace. Compare rates with GET /insurance/osha/incidence-rates. Needs the OSHA dataset enabled for your organization. Read-only; private, no-store. 



## OpenAPI

````yaml /openapi.json get /insurance/employers/{employerId}/osha-profile
openapi: 3.0.3
info:
  title: Effective API
  version: 2.0.0
  description: The public Effective REST API. Authenticate using an Effective API key.
servers:
  - url: https://api.canary.effectiveai.app/api/v2
    description: Canary
security:
  - bearerAuth: []
paths:
  /insurance/employers/{employerId}/osha-profile:
    get:
      tags:
        - OSHA
      summary: Get an employer’s OSHA profile
      description: >-
        An employer’s workplace safety record in one read. Per Form 300A year:
        whether OSHA has a filing, headcount, hours, cases and the TRC and DART
        rates (cases × 200,000 ÷ hours). Over the window: inspections by type,
        citations by type, penalties, severe injuries and fatalities. Every
        figure carries the path of the OSHA rows behind it. Pass siteId for one
        workplace. Compare rates with GET /insurance/osha/incidence-rates. Needs
        the OSHA dataset enabled for your organization. Read-only; private,
        no-store. 
      operationId: getEmployerOshaProfile
      parameters:
        - schema:
            type: string
            pattern: ^emp_[0-9a-f]{20}$
            description: 'Effective employer ID: emp_ followed by 20 hex characters.'
          required: true
          description: 'Effective employer ID: emp_ followed by 20 hex characters.'
          name: employerId
          in: path
        - schema:
            type: integer
            minimum: 1
            maximum: 10
            default: 5
            description: >-
              Number of Form 300A years, ending with the latest year OSHA has
              published.
          required: false
          description: >-
            Number of Form 300A years, ending with the latest year OSHA has
            published.
          name: years
          in: query
        - schema:
            type: string
            pattern: ^site_[0-9a-f]{20}$
            description: Limit the profile to one of the employer’s sites.
          required: false
          description: Limit the profile to one of the employer’s sites.
          name: siteId
          in: query
      responses:
        '200':
          description: The OSHA profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2EmployerOshaProfile'
        '400':
          description: >-
            invalid_request for invalid, unknown or repeated inputs;
            invalid_cursor means restart the list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '401':
          description: Authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '403':
          description: >-
            dataset_not_enabled: the OSHA dataset is not enabled for this
            organization. Other credential restrictions use forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '404':
          description: 'not_found: no such employer, site or OSHA row.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '500':
          description: Unexpected server failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
        '503':
          description: A dependency is unavailable; respect Retry-After.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2CodedError'
      security:
        - bearerAuth: []
components:
  schemas:
    V2EmployerOshaProfile:
      type: object
      properties:
        employerId:
          type: string
          pattern: ^emp_[0-9a-f]{20}$
          description: 'Effective employer ID: emp_ followed by 20 hex characters.'
        siteId:
          type: string
          nullable: true
          pattern: ^site_[0-9a-f]{20}$
          description: 'Effective site ID: site_ followed by 20 hex characters.'
        dataVersion:
          type: string
          nullable: true
          description: >-
            Version of the employer and site matching. It changes each time
            matching is rebuilt after an OSHA load (weekly). Null before the
            first build.
        window:
          type: object
          properties:
            from:
              type: string
            to:
              type: string
          required:
            - from
            - to
          description: >-
            Dates the inspection, citation, injury and fatality counts cover,
            inclusive.
        years:
          type: array
          items:
            type: object
            properties:
              year:
                type: integer
              coverage:
                type: string
                enum:
                  - filed
                  - notOnFile
                description: >-
                  filed: OSHA has a Form 300A for this year. notOnFile: it has
                  none, so the figures are null. Many smaller employers are not
                  required to file; no filing is not a clean record.
              sitesFiled:
                type: integer
                minimum: 0
                description: Sites with a 300A for the year.
              headcount:
                type: number
                nullable: true
                description: Annual average employees across filing sites.
              hours:
                type: number
                nullable: true
                description: Total hours worked across filing sites.
              recordableCases:
                type: integer
                nullable: true
                minimum: 0
                description: Days-away, restricted and other recordable cases.
              dartCases:
                type: integer
                nullable: true
                minimum: 0
                description: Days-away and restricted or transferred cases.
              trcRate:
                type: number
                nullable: true
                description: >-
                  Total recordable case rate: recordable cases × 200,000 ÷
                  hours, OSHA’s rate per 100 full-time workers.
              dartRate:
                type: number
                nullable: true
                description: 'DART rate: DART cases × 200,000 ÷ hours.'
              dafwDays:
                type: number
                nullable: true
                description: Days away from work.
              deaths:
                type: number
                nullable: true
              path:
                type: string
                description: >-
                  API path, relative to /api/v2, that lists or reads the OSHA
                  rows behind this value. MCP clients can read it as
                  effective://api followed by the path.
            required:
              - year
              - coverage
              - sitesFiled
              - headcount
              - hours
              - recordableCases
              - dartCases
              - trcRate
              - dartRate
              - dafwDays
              - deaths
              - path
          description: Newest first.
        inspections:
          type: object
          properties:
            total:
              type: integer
              minimum: 0
            byType:
              type: object
              additionalProperties:
                type: integer
                minimum: 0
              description: >-
                Counts by OSHA inspection type: accident, complaint, referral,
                monitoring, variance, followUp, unprogrammedRelated, planned,
                programmedRelated, unprogrammedOther, programmedOther,
                fatalityOrCatastrophe, other.
            path:
              type: string
              description: >-
                API path, relative to /api/v2, that lists or reads the OSHA rows
                behind this value. MCP clients can read it as effective://api
                followed by the path.
          required:
            - total
            - byType
            - path
        citations:
          type: object
          properties:
            serious:
              type: integer
              minimum: 0
            willful:
              type: integer
              minimum: 0
            repeat:
              type: integer
              minimum: 0
            other:
              type: integer
              minimum: 0
            path:
              type: string
              description: >-
                API path, relative to /api/v2, that lists or reads the OSHA rows
                behind this value. MCP clients can read it as effective://api
                followed by the path.
          required:
            - serious
            - willful
            - repeat
            - other
            - path
          description: Citations OSHA has not deleted, by violation type.
        penalties:
          type: object
          properties:
            initial:
              type: number
              description: Penalties as first proposed, US dollars.
            current:
              type: number
              description: Penalties after settlements and decisions, US dollars.
            path:
              type: string
              description: >-
                API path, relative to /api/v2, that lists or reads the OSHA rows
                behind this value. MCP clients can read it as effective://api
                followed by the path.
          required:
            - initial
            - current
            - path
          description: Sums over the window’s citations.
        severeInjuries:
          type: object
          properties:
            reports:
              type: integer
              minimum: 0
            hospitalized:
              type: number
            amputations:
              type: number
            path:
              type: string
              description: >-
                API path, relative to /api/v2, that lists or reads the OSHA rows
                behind this value. MCP clients can read it as effective://api
                followed by the path.
          required:
            - reports
            - hospitalized
            - amputations
            - path
        fatalities:
          type: object
          properties:
            byReportingSource:
              type: object
              properties:
                accidentInvestigations:
                  type: integer
                  minimum: 0
                  description: Fatal accidents OSHA investigated in the window.
                annualSummaries:
                  type: number
                  description: Deaths reported on the window years’ Form 300A filings.
              required:
                - accidentInvestigations
                - annualSummaries
            path:
              type: string
              description: >-
                API path, relative to /api/v2, that lists or reads the OSHA rows
                behind this value. MCP clients can read it as effective://api
                followed by the path.
          required:
            - byReportingSource
            - path
      required:
        - employerId
        - siteId
        - dataVersion
        - window
        - years
        - inspections
        - citations
        - penalties
        - severeInjuries
        - fatalities
    V2CodedError:
      allOf:
        - $ref: '#/components/schemas/V2Error'
        - type: object
          properties:
            code:
              type: string
              minLength: 1
              description: Stable error code. Clients must tolerate unknown future codes.
            details:
              type: array
              items:
                type: object
                properties:
                  location:
                    type: string
                    enum:
                      - path
                      - query
                      - header
                      - body
                  path:
                    type: array
                    items:
                      type: string
                      maxLength: 64
                    maxItems: 12
                  code:
                    type: string
                    enum:
                      - required
                      - invalid_type
                      - invalid_value
                      - unknown_field
                  message:
                    type: string
                    minLength: 1
                    maxLength: 200
                required:
                  - location
                  - path
                  - code
                  - message
              minItems: 1
              maxItems: 20
              description: Bounded safe validation issues; may omit some invalid fields.
            requestId:
              type: string
              minLength: 1
              maxLength: 128
              description: >-
                Existing server correlation for this HTTP attempt, when
                available.
            dataset:
              type: string
              enum:
                - naic
                - osha
              description: Dataset needed for dataset_not_enabled.
            accessUrl:
              type: string
              nullable: true
              format: uri
              description: >-
                Where to add the product to your account, for
                product_access_required.
          required:
            - code
    V2Error:
      type: object
      properties:
        error:
          type: string
          minLength: 1
          description: Human-readable explanation of the failure.
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Effective API key. Send Authorization: Bearer sk-eai-...'

````

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