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

# Get service

> Get service by ID



## OpenAPI

````yaml get /services/{id}
openapi: 3.1.0
info:
  title: CookieChimp API
  description: |
    API for CookieChimp.com.

    ## Request bodies

    Resource endpoints expect the resource wrapped under its own key, e.g.
    `{"category": {"name": "Analytics"}}` rather than a bare object.
    `PUT /password` wraps in `user`. Two endpoints take their body unwrapped:
    `POST /auth`, which takes `email` and `password` at the top level, and
    `POST /consent-banners/from-template`, which takes `jurisdiction_id` —
    a selector for which template to build from, not an attribute of the
    banner it creates.

    ## Response envelopes

    Listing endpoints — including `GET /groups` and `GET /accounts` — return
    `{"pagination": {...}, "data": [...]}`. `GET /banner-templates` is the
    exception: it returns `{"data": [...]}` with no pagination, being a fixed
    catalogue rather than a collection of the account's records.
    Most single-resource endpoints
    return `{"data": {...}}`; a single group or account is returned unwrapped.
    Resource-deletion endpoints return `{"message": "..."}`; `DELETE /auth`
    returns an empty object.
  version: 1.2.0
servers:
  - url: https://cookiechimp.com/api/v1
security:
  - authorization: []
paths:
  /services/{id}:
    get:
      tags:
        - Services
      summary: Get service
      description: Get service by ID
      operationId: getService
      parameters:
        - $ref: '#/components/parameters/account_id'
        - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: Service
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteServiceResponse'
        '401':
          $ref: '#/components/responses/AccountTokenRequired'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    account_id:
      name: account_id
      in: query
      description: |
        Which account to act on, as the account's API id. Only meaningful for a
        user API key, which may reach several accounts — an account key already
        identifies exactly one and ignores this.

        Accepted by the endpoints that declare it; others act on the account the
        key resolves to on its own.

        Optional for reads, where it narrows the request to that account.
        Required for writes that declare it when the key can reach more than one
        account: without it the request would act on an account it picked rather
        than one you named, so it is refused with a `400`.
      required: false
      schema:
        type: string
    id:
      name: id
      in: path
      description: ID of the resource
      required: true
      schema:
        type: string
  schemas:
    SiteServiceResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/SiteService'
    SiteService:
      type: object
      properties:
        id:
          type: string
          readOnly: true
        name:
          type: string
        description:
          type:
            - string
            - 'null'
        processing_company:
          type:
            - string
            - 'null'
        privacy_policy_url:
          type:
            - string
            - 'null'
        additional_info:
          type:
            - string
            - 'null'
        accepted_by_default:
          type: boolean
        enabled:
          type: boolean
        auto_block:
          type: boolean
        auto_block_domains:
          type: array
          items:
            type: string
          description: Domains the widget blocks for this service before consent
        default_language:
          type:
            - string
            - 'null'
        category:
          type: object
          description: The category this service is filed under
          properties:
            id:
              type:
                - string
                - 'null'
            name:
              type:
                - string
                - 'null'
        translations:
          type: array
          description: >
            The localized copy for this service, one entry per language, with
            the

            IDs `site_service_translations_attributes` expects back. Discarded

            translations are not returned.
          items:
            type: object
            properties:
              id:
                type: string
              language_code:
                type: string
              description:
                type:
                  - string
                  - 'null'
              additional_info:
                type:
                  - string
                  - 'null'
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      example:
        id: svc1
        name: Google Analytics
        description: Measures how visitors use the site.
        processing_company: Google LLC
        privacy_policy_url: https://policies.google.com/privacy
        additional_info: null
        accepted_by_default: false
        enabled: true
        auto_block: true
        auto_block_domains:
          - google-analytics.com
        default_language: en
        category:
          id: cat1
          name: Analytics
        translations:
          - id: svct1
            language_code: de
            description: Misst, wie Besucher die Website nutzen.
            additional_info: null
        created_at: '2023-03-01T09:00:00Z'
        updated_at: '2023-03-23T12:34:56Z'
    Error:
      type: object
      description: |
        The standard error envelope, used for authentication, authorization,
        pagination and not-found errors.
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: integer
              message:
                type: string
      example:
        errors:
          - code: 401
            message: Invalid API Key
  responses:
    AccountTokenRequired:
      description: |
        Missing or invalid API token, or a token that does not resolve to an
        account. Account-scoped endpoints accept an account token, or a user
        token whose user belongs to an account; partner tokens are rejected.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errors:
              - code: 401
                message: API key must belong to an account
    NotFound:
      description: The record does not exist, or does not belong to the caller
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errors:
              - code: 404
                message: Record not found
    RateLimited:
      description: |
        Too many requests. The general limit is 300 requests per 5 minutes per
        API token; the auth endpoints are throttled more tightly per IP.
      headers:
        Retry-After:
          description: Seconds until the current rate-limit window resets
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errors:
              - code: 429
                message: Too many requests. Please retry later.
  securitySchemes:
    authorization:
      type: http
      scheme: bearer
      description: API token obtained from the login endpoint or the dashboard

````