Goodays core API

The core API from Goodays — 22 operation(s) for core.

Operations 22

GET /configuration #
GET /levels #
GET /levels/{id} #
GET /levels/{level_pk}/places #
GET /levels/{level_pk}/responses #
GET /levels/{level_pk}/responses/bulk #
GET /places #
GET /places/{id} #
GET /places/{place_pk}/levels #
GET /places/{place_pk}/responses #
GET /places/{place_pk}/responses/bulk #
GET /places/{place_pk}/surveys #
GET /places/{place_pk}/users #
GET /surveys #
GET /surveys/{id} #
GET /surveys/{survey_pk}/places #
GET /surveys/{survey_pk}/responses #
GET /surveys/{survey_pk}/responses/bulk #
GET /universes #
GET /users #
GET /users/{id} #
GET /users/{user_pk}/places #

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/goodays-core-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

goodays-core-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Goodays Core API
  description: 'Goodays (formerly Critizr) REST API for managing your customer experience environment: places, levels, surveys, users, customer reviews (responses), solicitations (email/SMS outreach), events, and statistics. Reconstructed by API Evangelist from the per-endpoint OpenAPI fragments published on the Goodays ReadMe docs.'
  version: v2
servers:
- url: https://api.goodays.co/v2
security:
- tokenAuth: []
tags:
- name: core
paths:
  /configuration:
    get:
      operationId: configuration_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Configuration_read'
      tags:
      - core
  /levels:
    get:
      operationId: levels_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Level_read'
      parameters:
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: category_id
        required: false
        in: query
        description: ''
        schema:
          type: number
      tags:
      - core
  /levels/{id}:
    get:
      operationId: levels_read
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/LevelDetail_read'
      parameters:
      - name: id
        required: true
        in: path
        description: A unique value identifying this brand level.
        schema:
          type: string
      tags:
      - core
  /levels/{level_pk}/places:
    get:
      operationId: levels_places_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Place_read'
      parameters:
      - name: level_pk
        required: true
        in: path
        description: A unique value identifying the parent level.
        schema:
          type: string
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: partner_id
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
  /levels/{level_pk}/responses:
    get:
      operationId: levels_responses_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Response_read'
      parameters:
      - name: level_pk
        required: true
        in: path
        description: ''
        schema:
          type: string
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: start_date
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: end_date
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: date_field
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: first_name
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: last_name
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: email
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: phone
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: crm_id
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: place
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: source
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: survey
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: has_answers
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: has_message
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: has_reply
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
  /levels/{level_pk}/responses/bulk:
    get:
      operationId: levels_responses_bulk
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ResponseDetail_read'
      parameters:
      - name: level_pk
        required: true
        in: path
        description: ''
        schema:
          type: string
      tags:
      - core
  /places:
    get:
      operationId: places_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Place_read'
      parameters:
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: partner_id
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
  /places/{id}:
    get:
      operationId: places_read
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PlaceDetail_read'
      parameters:
      - name: id
        required: true
        in: path
        description: A unique value identifying this place.
        schema:
          type: string
      tags:
      - core
  /places/{place_pk}/levels:
    get:
      operationId: places_levels_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Level_read'
      parameters:
      - name: place_pk
        required: true
        in: path
        description: A unique value identifying the parent place.
        schema:
          type: string
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: category_id
        required: false
        in: query
        description: ''
        schema:
          type: number
      tags:
      - core
  /places/{place_pk}/responses:
    get:
      operationId: places_responses_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Response_read'
      parameters:
      - name: place_pk
        required: true
        in: path
        description: ''
        schema:
          type: string
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: start_date
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: end_date
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: date_field
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: first_name
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: last_name
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: email
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: phone
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: crm_id
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: place
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: source
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: survey
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: has_answers
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: has_message
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: has_reply
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
  /places/{place_pk}/responses/bulk:
    get:
      operationId: places_responses_bulk
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ResponseDetail_read'
      parameters:
      - name: place_pk
        required: true
        in: path
        description: ''
        schema:
          type: string
      tags:
      - core
  /places/{place_pk}/surveys:
    get:
      operationId: places_surveys_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Survey_read'
      parameters:
      - name: place_pk
        required: true
        in: path
        description: A unique value identifying the parent place.
        schema:
          type: string
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: slug
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
  /places/{place_pk}/users:
    get:
      operationId: places_users_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserProfile_read'
      parameters:
      - name: place_pk
        required: true
        in: path
        description: A unique value identifying the parent place.
        schema:
          type: string
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: email
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: first_name
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: last_name
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: phone
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
  /surveys:
    get:
      operationId: surveys_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Survey_read'
      parameters:
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: slug
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
  /surveys/{id}:
    get:
      operationId: surveys_read
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SurveyDetail_read'
      parameters:
      - name: id
        required: true
        in: path
        description: A unique value identifying this rating question tag.
        schema:
          type: string
      tags:
      - core
  /surveys/{survey_pk}/places:
    get:
      operationId: surveys_places_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Place_read'
      parameters:
      - name: survey_pk
        required: true
        in: path
        description: A unique value identifying the parent survey.
        schema:
          type: string
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: partner_id
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
  /surveys/{survey_pk}/responses:
    get:
      operationId: surveys_responses_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Response_read'
      parameters:
      - name: survey_pk
        required: true
        in: path
        description: ''
        schema:
          type: string
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: start_date
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: end_date
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: date_field
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: first_name
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: last_name
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: email
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: phone
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: crm_id
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: place
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: source
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: survey
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: has_answers
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: has_message
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: has_reply
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
  /surveys/{survey_pk}/responses/bulk:
    get:
      operationId: surveys_responses_bulk
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ResponseDetail_read'
      parameters:
      - name: survey_pk
        required: true
        in: path
        description: ''
        schema:
          type: string
      tags:
      - core
  /universes:
    get:
      operationId: universes_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Universe_read'
      parameters:
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      tags:
      - core
  /users:
    get:
      operationId: users_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserProfile_read'
      parameters:
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: email
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: first_name
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: last_name
        required: false
        in: query
        description: ''
        schema:
          type: string
      - name: phone
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
  /users/{id}:
    get:
      operationId: users_read
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/UserProfile_read'
      parameters:
      - name: id
        required: true
        in: path
        description: A unique value identifying this user profile.
        schema:
          type: string
      tags:
      - core
  /users/{user_pk}/places:
    get:
      operationId: users_places_list
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Place_read'
      parameters:
      - name: user_pk
        required: true
        in: path
        description: A unique value identifying the parent user.
        schema:
          type: string
      - name: cursor
        required: false
        in: query
        description: The pagination cursor value.
        schema:
          type: string
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: sort
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: partner_id
        required: false
        in: query
        description: ''
        schema:
          type: string
      tags:
      - core
components:
  schemas:
    Universe_read:
      type: object
      properties:
        id:
          type: string
        key:
          type: string
        label:
          type: string
      additionalProperties:
        type: string
    ResponseDetail_read:
      type: object
      properties:
        id:
          type: string
        token:
          type: string
        created_date:
          type: string
          format: date-time
        updated_date:
          type: string
          format: date-time
        source:
          type: string
          enum:
          - email
          - sms_trans
          - sms_conv
          - sms_text
          - plv
          - receipt
          - google
          - google_messaging
          - critizr
          - tripadvisor
          - pagesjaunes
          - sdk
          - facebook
          - facebook_reviews
          - facebook_messenger
          - widget
          - terminal
          - outbound_call
          - wifi
          - sms
          - api
          - undefined
          - merci
          - google_play_store
          - apple_app_store
          - uber_eats
          - whatsapp
        survey:
          type: object
          properties:
            id:
              type: string
            slug:
              type: string
            label:
              type: string
            enabled:
              type: boolean
            detail_url:
              type: string
          additionalProperties:
            type: string
        answers:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              value:
                type: string
              question:
                type: object
                properties:
                  id:
                    type: string
                  title:
                    type: string
                  type:
                    type: string
                    enum:
                    - none
                    - stars
                    - yesno
                    - choices
                    - nps
                    - emoji
                    - text
                    - multiple_answers
                    - csat
                  enabled:
                    type: boolean
                additionalProperties:
                  type: string
            additionalProperties:
              type: string
        message:
          type: object
          properties:
            id:
              type: string
            created_date:
              type: string
              format: date-time
            type:
              type: string
              enum:
              - Question
              - Idea
              - Problem
              - Praise
              - Message
              - NoType
            content:
              type: string
            attachment:
              type: string
            sender:
              type: object
              properties:
                email:
                  type: string
                first_name:
                  type: string
                last_name:
                  type: string
              additionalProperties:
                type: string
          additionalProperties:
            type: string
        reply:
          type: object
          properties:
            id:
              type: string
            created_date:
              type: string
              format: date-time
            type:
              type: string
              enum:
              - call
              - text
            content:
              type: string
            attachment:
              type: string
            sender:
              type: object
              properties:
                email:
                  type: string
                first_name:
                  type: string
                last_name:
                  type: string
              additionalProperties:
                type: string
          additionalProperties:
            type: string
        user:
          type: object
          properties:
            email:
              type: string
            first_name:
              type: string
            last_name:
              type: string
            opt_in:
              type: object
              properties:
                newsletter:
                  type: boolean
                email:
                  type: boolean
                sms:
                  type: boolean
              additionalProperties:
                type: string
          additionalProperties:
            type: string
        context:
          type: string
        place:
          type: object
          properties:
            id:
              type: string
            partner_id:
              type: string
            name:
              type: string
            enabled:
              type: boolean
            detail_url:
              type: string
          additionalProperties:
            type: string
        delegated_to:
          type: object
          properties:
            id:
              type: string
            partner_id:
              type: string
            name:
              type: string
            enabled:
              type: boolean
            detail_url:
              type: string
          additionalProperties:
            type: string
        attached_messages:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              created_date:
                type: string
                format: date-time
              type:
                type: string
                enum:
                - Question
                - Idea
                - Problem
                - Praise
                - Message
                - NoType
              content:
                type: string
              attachment:
                type: string
              sender:
                type: object
                properties:
                  email:
                    type: string
                  first_name:
                    type: string
                  last_name:
                    type: string
                additionalProperties:
                  type: string
            additionalProperties:
              type: string
        state:
          type: string
          enum:
          - open
          - closed
          - spam
        thread:
          type: string
        actions:
          type: object
          additionalProperties:
            type: string
        alert_triggered:
          type: boolean
      additionalProperties:
        type: string
    Survey_read:
      type: object
      properties:
        id:
          type: string
        slug:
          type: string
        label:
          type: string
        enabled:
          type: boolean
        detail_url:
          type: string
      additionalProperties:
        type: string
    SurveyDetail_read:
      type: object
      properties:
        id:
          type: string
        slug:
          type: string
        label:
          type: string
        enabled:
          type: boolean
        questions:
          type: string
        places:
          type: string
        responses:
          type: string
      additionalProperties:
        type: string
    Configuration_read:
      type: object
      properties:
        custom_parameters:
          type: array
          items:
            type: object
            properties:
              key:
                type: string
              label:
                type: string
              required:
                type: boolean
              use_in_stats:
                type: boolean
            additionalProperties:
              type: string
      additionalProperties:
        type: string
    Place_read:
      type: object
      properties:
        id:
          type: string
        partner_id:
          type: string
        name:
          type: string
        enabled:
          type: boolean
        detail_url:
          type: string
      additionalProperties:
        type: string
    Level_read:
      type: object
      properties:
        id:
          type: string
        partner_id:
          type: string
        category_id:
          type: integer
        name:
          type: string
        detail_url:
          type: string
      additionalProperties:
        type: string
    UserProfile_rea

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/goodays/refs/heads/main/openapi/goodays-core-api-openapi.yml