GOOD Grants Rounds API

Use these operations to retrieve round information for your grant programs. Rounds represent phases within a funding cycle, such as application rounds, review rounds, or decision rounds. Each round has specific start and end dates, associated forms, and can be scoped to specific chapters. Note: Rounds are read-only via the API and must be managed through the Good Grants interface.

Operations 2

GET /round List rounds #
GET /round/{round_slug} Get round #

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/good-grants:good-grants-rounds-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

good-grants-rounds-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Good Grants Rounds API
  version: '2.3'
  description: 'The Good Grants API enables you to programmatically manage grant-making programs, funding cycles, and application workflows.


    Use this API to:

    - Create and manage grant applications and submissions

    - Automate review workflows and scoring assignments

    - Track grant payments and fund allocations

    - Generate compliance reports and analytics

    - Integrate with external systems via webhooks


    All API requests require authentication using an API key provided in the `X-Api-Key` header.'
  license:
    name: Creative Force Client Subscription Terms
    url: https://creativeforce.team/agreement/
servers:
- url: https://api.us.cr4ce.com
  description: US regional endpoint
- url: https://api.eu.cr4ce.com
  description: EU regional endpoint
- url: https://api.au.cr4ce.com
  description: Australasia regional endpoint
- url: https://api.ca.cr4ce.com
  description: Canada regional endpoint
- url: https://api.hk.cr4ce.com
  description: Hong Kong regional endpoint
security:
- ApiKeyAuth: []
tags:
- name: Rounds
  description: 'Use these operations to retrieve round information for your grant programs.

    Rounds represent phases within a funding cycle, such as application rounds, review rounds, or decision rounds.


    Each round has specific start and end dates, associated forms, and can be scoped to specific chapters.

    Note: Rounds are read-only via the API and must be managed through the Good Grants interface.'
paths:
  /round:
    get:
      summary: List rounds
      operationId: GetRoundCollectionV23
      tags:
      - Rounds
      parameters:
      - $ref: '#/components/parameters/roundTypeFilter'
      - $ref: '#/components/parameters/formFilter'
      - $ref: '#/components/parameters/seasonFilter'
      - $ref: '#/components/parameters/roundSlugFilter'
      - $ref: '#/components/parameters/roundOrder'
      - $ref: '#/components/parameters/sortDirection'
      - $ref: '#/components/parameters/deletedFilter'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/perPage'
      - $ref: '#/components/parameters/Accept'
      - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Paginated list of rounds.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoundList'
            application/xml:
              schema:
                $ref: '#/components/schemas/RoundList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: List rounds.
  /round/{round_slug}:
    parameters:
    - $ref: '#/components/parameters/roundSlug'
    get:
      summary: Get round
      operationId: GetRoundV23
      tags:
      - Rounds
      parameters:
      - $ref: '#/components/parameters/Accept'
      - $ref: '#/components/parameters/X-Api-Language'
      responses:
        '200':
          description: Round retrieved.
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Round'
            application/xml:
              schema:
                $ref: '#/components/schemas/Round'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      description: Get the round identified by the specified slug.
components:
  schemas:
    Forbidden:
      allOf:
      - $ref: '#/components/schemas/BaseProblem'
      - type: object
        properties:
          status_code:
            type: integer
            minimum: 403
            maximum: 403
    NotFound:
      allOf:
      - $ref: '#/components/schemas/BaseProblem'
      - type: object
        properties:
          status_code:
            type: integer
            minimum: 404
            maximum: 404
    BadRequest:
      allOf:
      - $ref: '#/components/schemas/BaseProblem'
      - type: object
        properties:
          status_code:
            type: integer
            minimum: 400
            maximum: 400
    RoundList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/Round'
      example:
        current_page: 1
        data:
        - chapters:
          - slug: AbCdEfGh
            link: https://api.eu.cr4ce.com/chapter/AbCdEfGh
            name:
              en_GB: lecht
          - slug: CdEfGhIj
            link: https://api.eu.cr4ce.com/chapter/CdEfGhIj
            name:
              en_GB: Glencoe
          created: '2026-06-24T13:57:52Z'
          end_date: null
          form: EfGhIjKl
          name:
            en_GB: form 15
          season:
            slug: GhIjKlMn
            link: https://api.eu.cr4ce.com/season/GhIjKlMn
            name:
              en_GB: '2026'
          slug: IjKlMnOp
          start_date: null
          type: application
          updated: '2026-06-24T13:57:52Z'
        - chapters: []
          created: '2025-02-13T11:41:26Z'
          end_date: '2026-04-22 07:43:00'
          form: KlMnOpQr
          name:
            en_GB: Cycling grants scoring
          season:
            slug: GhIjKlMn
            link: https://api.eu.cr4ce.com/season/GhIjKlMn
            name:
              en_GB: '2026'
          slug: MnOpQrSt
          start_date: '2025-03-07 08:43:00'
          type: reviewer
          updated: '2026-04-08T15:24:34Z'
        first_page_url: https://api.eu.cr4ce.com/round?per_page=100&page=1
        from: 1
        last_page: 1
        last_page_url: https://api.eu.cr4ce.com/round?per_page=100&page=1
        next_page_url: ''
        path: https://api.eu.cr4ce.com/round
        per_page: 100
        prev_page_url: ''
        to: 29
        total: 29
    Round:
      title: Round
      description: Phase of a season with its own type, dates, form, and chapters.
      type: object
      properties:
        chapters:
          type: array
          description: Chapters associated with the round.
          items:
            type: object
            properties:
              slug:
                type: string
                description: Short URL-safe identifier for the chapter.
              link:
                type: string
                format: uri
                description: Canonical URL for the chapter resource.
              name:
                type: object
                description: Map keyed by locale code (for example, `en_GB` or `fr_FR`).
                additionalProperties:
                  type: string
        created:
          type: string
          format: date-time
          description: Date and time when the round was created.
        end_date:
          type:
          - string
          - 'null'
          description: Date and time when the round closes, in `YYYY-MM-DD HH:MM:SS` format, or null when no close date is set.
        form:
          type: string
          description: Slug of the form associated with the round.
        name:
          type: object
          description: Map keyed by locale code (for example, `en_GB` or `fr_FR`).
          additionalProperties:
            type: string
        season:
          type: object
          description: Season the round belongs to.
          properties:
            slug:
              type: string
              description: Short URL-safe identifier for the season.
            link:
              type: string
              format: uri
              description: Canonical URL for the season resource.
            name:
              type: object
              description: Map keyed by locale code (for example, `en_GB` or `fr_FR`).
              additionalProperties:
                type: string
        slug:
          type: string
          description: Short URL-safe identifier for the round.
        start_date:
          type:
          - string
          - 'null'
          description: Date and time when the round opens, in `YYYY-MM-DD HH:MM:SS` format, or null when no open date is set.
        type:
          type: string
          description: Type of the round.
          enum:
          - application
          - reviewer
          - feedback
        updated:
          type: string
          format: date-time
          description: Date and time when the round was last updated.
      example:
        chapters:
        - slug: CdEfGhIj
          link: https://api.au.cr4ce.com/chapter/CdEfGhIj
          name:
            en_GB: Open
        created: '2026-01-15T09:00:00Z'
        end_date: '2026-03-31 23:59:59'
        form: AbCdEfGh
        name:
          en_GB: Entry round
        season:
          slug: QrStUvWx
          link: https://api.au.cr4ce.com/season/QrStUvWx
          name:
            en_GB: '2025'
        slug: EfGhIjKl
        start_date: '2026-01-01 00:00:00'
        type: application
        updated: '2026-01-15T09:00:00Z'
    TooManyRequests:
      allOf:
      - $ref: '#/components/schemas/BaseProblem'
      - type: object
        properties:
          status_code:
            type: integer
            minimum: 429
            maximum: 429
    Pagination:
      type: object
      title: Pagination
      properties:
        current_page:
          type: integer
          description: Number of the page returned by this response, starting at `1`.
        first_page_url:
          type: string
          description: URL of the first page in the result set, relative when the requested page is beyond the last page.
        from:
          type:
          - integer
          - 'null'
          description: Position of the first record on this page within the full result set, starting at `1`, or `null` when the requested page is beyond the last page.
        last_page:
          type: integer
          description: Total number of pages.
        last_page_url:
          type: string
          description: URL of the last page in the result set, relative when the requested page is beyond the last page.
        next_page_url:
          type: string
          description: URL of the next page in the result set, empty when the current page is the last page.
        path:
          type: string
          description: Canonical URL of the endpoint, without query parameters.
        per_page:
          type: integer
          default: 10
          description: Maximum number of records returned per page.
        prev_page_url:
          type: string
          description: URL of the previous page in the result set, empty when the current page is the first page.
        to:
          type:
          - integer
          - 'null'
          description: Position of the last record on this page within the full result set, or `null` when the requested page is beyond the last page.
        total:
          type: integer
          description: Total number of records across all pages.
    BaseProblem:
      description: Standard error envelope for all API error responses.
      type: object
      properties:
        message:
          type: string
        status_code:
          type: integer
          minimum: 400
          maximum: 599
    Unauthorized:
      allOf:
      - $ref: '#/components/schemas/BaseProblem'
      - type: object
        properties:
          status_code:
            type: integer
            minimum: 401
            maximum: 401
  parameters:
    sortDirection:
      name: dir
      in: query
      required: false
      description: Sort in ascending or descending order. Invalid values are rejected with `400 Bad Request`.
      schema:
        type: string
        enum:
        - asc
        - desc
    Accept:
      name: Accept
      in: header
      required: true
      description: Defines the response type.
      schema:
        type: string
        enum:
        - application/vnd.Creative Force.v2.3+json
        - application/vnd.Creative Force.v2.3+xml
    roundSlug:
      name: round_slug
      in: path
      required: true
      description: Slug of the round.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    roundOrder:
      name: order
      in: query
      required: false
      description: Sort by a supported round field.
      schema:
        type: string
        enum:
        - created
        - end_date
        - name
        - start_date
        - type
        - updated
    roundSlugFilter:
      name: slug
      in: query
      required: false
      description: Filter to a single round by slug. Returns at most one item.
      schema:
        type: string
        pattern: ^[A-Za-z]{8}$
    deletedFilter:
      name: deleted
      in: query
      required: false
      description: 'Filter by deletion mode.

        * `only` - Show only deleted resources.

        * `included` - Include deleted resources.

        * `none` - Exclude deleted resources.'
      schema:
        type: string
        enum:
        - only
        - included
        - none
    X-Api-Language:
      name: x-api-language
      in: header
      required: false
      description: 'Defines the languages included in the response. If non are provided, the account default language is returned.


        Value `all` overrides any other values present.


        You can request multiple languages using a comma-separated string of languages.


        The selected language must be supported by your account or a `400` error is returned.'
      style: simple
      explode: false
      schema:
        type: array
        items:
          type: string
          enum:
          - all
          - ar_AR
          - bg_BG
          - bn_IN
          - ca_ES
          - cs_CZ
          - cy_GB
          - da_DK
          - de_DE
          - en_GB
          - en_US
          - el_GR
          - es_NN
          - es_LA
          - et_EE
          - fa_NN
          - fi_FI
          - fr_FR
          - fr_CA
          - he_IL
          - hi_IN
          - hr_HR
          - hu_HU
          - hy_AM
          - it_IT
          - ja_JP
          - ko_KR
          - lt_LT
          - ms_MY
          - nl_NL
          - nb_NO
          - pl_PL
          - pt_BR
          - ro_RO
          - ru_RU
          - sk_SK
          - sl_SI
          - sq_AL
          - sr_RS
          - sv_SE
          - sw_NN
          - th_TH
          - tr_TR
          - uk_UA
          - vi_VN
          - zh_CN
          - zh_HK
      example:
      - en_GB
      - fr_FR
    seasonFilter:
      name: season
      in: query
      required: false
      description: 'Filter by season slug.

        Use `all` to show all seasons.'
      schema:
        type: string
    perPage:
      name: per_page
      in: query
      required: false
      description: 'Limit the number of items returned to between 1 and 100.


        If you provide a value outside this range, you will receive a `400` response.

        '
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
    roundTypeFilter:
      name: type
      in: query
      required: false
      description: Filter by round type.
      schema:
        type: string
        enum:
        - application
        - reviewer
        - feedback
    page:
      name: page
      in: query
      required: false
      description: Specify the page number to return.
      schema:
        type: integer
        minimum: 1
        default: 1
    formFilter:
      name: form
      in: query
      required: false
      description: 'Filter by form slug.


        Results cover every form unless you name one. Pass `all` to state that explicitly.'
      schema:
        type: string
  responses:
    NotFound:
      description: Resource identified by the path slug does not exist. Returned when the slug is well-formed but no record matches it.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotFound'
        application/xml:
          schema:
            $ref: '#/components/schemas/NotFound'
    ServiceUnavailable:
      description: Service is temporarily unavailable due to regional maintenance.
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                description: Human-readable maintenance status.
            example:
              status: Maintenance in progress
        application/xml:
          schema:
            type: object
            properties:
              status:
                type: string
                description: Human-readable maintenance status.
            example:
              status: Maintenance in progress
    Unauthorized:
      description: Missing `x-api-key` header.
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
        application/xml:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    BadRequest:
      description: 'Request was rejected before the endpoint could process it. Common causes: invalid `Accept` header, unsupported `x-api-language` code, empty request body on `POST` / `PUT`, invalid JSON in the request body, or an invalid slug format in a path parameter.'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequest'
        application/xml:
          schema:
            $ref: '#/components/schemas/BadRequest'
    TooManyRequests:
      description: Rate limit of 60 requests per minute exceeded.
      headers:
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TooManyRequests'
        application/xml:
          schema:
            $ref: '#/components/schemas/TooManyRequests'
    Forbidden:
      description: 'Authenticated request denied. Common causes: invalid or unknown

        API key, suspended account, `api` feature not enabled for

        the account, or a read-only API key used for a request that

        is not a `GET`.'
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Forbidden'
        application/xml:
          schema:
            $ref: '#/components/schemas/Forbidden'
  headers:
    X-RateLimit-Remaining:
      description: Number of requests remaining in the current rate limit window.
      schema:
        type: integer
        example: 58
    X-RateLimit-Limit:
      description: Maximum number of requests allowed per minute.
      schema:
        type: integer
        example: 60
    X-RateLimit-Reset:
      description: Unix timestamp when the rate limit window resets.
      schema:
        type: integer
        example: 1783470988
    Retry-After:
      description: Number of seconds the client should wait before retrying.
      schema:
        type: integer
      example: 60
    ETag:
      description: Entity tag for the selected representation.
      schema:
        type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: 'API key used to authenticate and authorise every request.

        Include it in the `x-api-key` header.'