Canva Oidc API

The oidc API from Canva — 2 operation(s) for oidc.

Operations 2

GET /v1/oidc/jwks #
GET /v1/oidc/userinfo #

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/canva-oidc-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

canva-oidc-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    name: Canva Developer Community
    url: https://community.canva.dev/
  description: API for building integrations with Canva via a REST api
  license:
    name: ©2023 All Rights Reserved
  termsOfService: https://www.canva.com/trust/legal/
  title: Canva Connect Oidc API
  version: 2024-06-18
servers:
- description: Canva Connect API
  url: https://api.canva.com/rest
tags:
- name: oidc
paths:
  /v1/oidc/jwks:
    servers:
    - description: Canva Connect API
      url: https://api.canva.com/auth
    get:
      description: Gets the JSON Web Key Set (public keys) for OIDC. These keys are used to verify JWTs in OpenID Connect flows.
      operationId: getOidcJwks
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonWebKeySet'
          description: OK
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security: []
      tags:
      - oidc
  /v1/oidc/userinfo:
    servers:
    - description: Canva Connect API
      url: https://api.canva.com/auth
    get:
      description: 'Fetches the current UserInfo claims for the authorized user. This is the same fields

        returned by a id_token returns during authorization.


        The claims returned depend on the granted scopes: `profile` claims (`name`, `given_name`,

        `family_name`) are only returned when the `profile` scope is granted, and `email` claims

        (`email`, `email_verified`) are only returned when the `email` scope is granted. The

        `openid` scope is always required.'
      operationId: userInfo
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserInfoResponse'
          description: OK
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unauthorized
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error Response
      security:
      - oauthAuthCode:
        - openid
        - profile
        - email
      - oauthAuthCode:
        - openid
        - profile
      - oauthAuthCode:
        - openid
        - email
      tags:
      - oidc
      x-rate-limit-per-client-user: 10
components:
  schemas:
    ErrorCode:
      description: 'A short string indicating what failed. This field can be used to handle errors programmatically.

        '
      enum:
      - internal_error
      - invalid_field
      - invalid_header_value
      - permission_denied
      - too_many_requests
      - not_found
      - bad_request_body
      - bad_http_method
      - bad_request_params
      - bad_query_params
      - user_role_required
      - endpoint_not_found
      - endpoint_gone
      - unsupported_version
      - invalid_access_token
      - revoked_access_token
      - missing_field
      - missing_scope
      - invalid_grant
      - invalid_request
      - invalid_client
      - unauthorized_client
      - unsupported_grant_type
      - invalid_scope
      - invalid_basic_header
      - invalid_file_format
      - quota_exceeded
      - ai_credit_quota_exceeded
      - ai_credit_quota_cooldown
      - unsupported_content_type
      - request_too_large
      - folder_not_found
      - item_in_multiple_folders
      - asset_not_found
      - max_limit_reached
      - permission_not_found
      - permission_exists
      - unauthorized_user
      - user_not_found
      - user_not_eligible
      - group_not_found
      - app_not_found
      - app_has_non_draft_versions
      - invalid_status_transition
      - translation_validation_failed
      - content_not_found
      - doctype_not_found
      - design_not_found
      - offset_too_large
      - page_not_found
      - design_or_comment_not_found
      - design_or_thread_not_found
      - review_dismissed
      - design_type_not_found
      - team_not_found
      - team_is_default
      - comment_not_found
      - too_many_comments
      - too_many_replies
      - message_too_long
      - thread_not_found
      - reply_not_found
      - design_not_fillable
      - autofill_data_invalid
      - feature_not_available
      - unsupported_design_type
      - design_generation_not_enabled
      - license_required
      - input_unsafe
      - display_name_unavailable
      - user_not_managed
      - saml_team_id_conflict
      - saml_name_id_not_available
      - user_email_unverified
      - user_not_active
      - user_pending_consent
      - account_exists
      type: string
    UserInfoResponse:
      example:
        sub: UAAAAAAAAA
        name: Alice Person
        given_name: Alice
        family_name: Person
        email: alice.person@example.com
        email_verified: true
      properties:
        sub:
          description: Identifier for the End-User at the Issuer.
          type: string
        name:
          description: 'End-User''s full name in displayable form including all name parts, possibly including

            titles and suffixes, ordered according to the End-User''s locale and preferences.'
          type: string
        given_name:
          description: 'Given name(s) or first name(s) of the End-User. Note that in some cultures, people can

            have multiple given names; all can be present, with the names being separated by space

            characters.'
          type: string
        family_name:
          description: 'Surname(s) or last name(s) of the End-User. Note that in some cultures, people can have

            multiple family names or no family name; all can be present, with the names being

            separated by space characters.'
          type: string
        email:
          description: 'End-User''s preferred e-mail address. Its value MUST conform to the RFC 5322 [RFC5322]

            addr-spec syntax. The RP MUST NOT rely upon this value being unique, as discussed in

            Section 5.7.'
          format: email
          type: string
        email_verified:
          description: 'True if the End-User''s e-mail address has been verified; otherwise false. When this

            Claim Value is true, this means that the OP took affirmative steps to ensure that this

            e-mail address was controlled by the End-User at the time the verification was

            performed. The means by which an e-mail address is verified is context specific,

            and dependent upon the trust framework or contractual agreements within which the

            parties are operating.'
          type: boolean
      required:
      - sub
      type: object
    Error:
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
        message:
          description: A human-readable description of what went wrong.
          type: string
      required:
      - code
      - message
      type: object
    JsonWebKey:
      description: 'Standard Json Web Key specification following https://www.rfc-editor.org/rfc/rfc7517 and

        https://www.rfc-editor.org/rfc/rfc7518.html.'
      properties:
        alg:
          description: 'The "alg" (algorithm) parameter identifies the algorithm intended for

            use with the key.

            See https://www.rfc-editor.org/rfc/rfc7517#section-4'
          type: string
        kid:
          description: 'The "kid" (key ID) parameter is used to match a specific key.  This

            is used, for instance, to choose among a set of keys within a JWK Set

            during key rollover. When "kid" values are used within a JWK Set,

            different keys within the JWK Set SHOULD use distinct "kid" values.

            The "kid" value is a case-sensitive string.

            See https://www.rfc-editor.org/rfc/rfc7517#section-4'
          type: string
        kty:
          description: 'The "kty" (key type) parameter identifies the cryptographic algorithm

            family used with the key, such as "RSA" or "EC". The "kty" value is a

            case-sensitive string. At the moment, only "RSA" is supported.

            See https://www.rfc-editor.org/rfc/rfc7517#section-4'
          type: string
        n:
          description: "The \"n\" (modulus) parameter contains the modulus value for the RSA\n   public key.  It is represented as a Base64urlUInt-encoded value.\nSee https://www.rfc-editor.org/rfc/rfc7518.html#section-6.3"
          type: string
        e:
          description: "The \"e\" (exponent) parameter contains the exponent value for the RSA\n   public key.  It is represented as a Base64urlUInt-encoded value.\nSee https://www.rfc-editor.org/rfc/rfc7518.html#section-6.3"
          type: string
        use:
          description: 'The "use" (public key use) parameter identifies the intended use of

            the public key. The "use" parameter is employed to indicate whether

            a public key is used for encrypting data or verifying the signature

            on data. Values are commonly "sig" (signature) or "enc" (encryption).

            See https://www.rfc-editor.org/rfc/rfc7517#section-4'
          type: string
      required:
      - e
      - kid
      - kty
      - n
      type: object
    JsonWebKeySet:
      properties:
        keys:
          description: An array of JSON Web Key values. The order of keys has no meaning.
          items:
            $ref: '#/components/schemas/JsonWebKey'
          type: array
      required:
      - keys
      type: object
  securitySchemes:
    basicAuth:
      scheme: basic
      type: http
    oauthAuthCode:
      flows:
        authorizationCode:
          authorizationUrl: https://www.canva.com/api/oauth/authorize
          scopes:
            design:content:read: View the contents of the user's designs.
            design:meta:read: View the metadata of the user's designs.
            design:content:write: Create designs on the user's behalf.
            folder:read: 'View the metadata and contents of the user''s folders, including their **Projects**

              folder.'
            folder:write: 'Add, move, or remove the user''s folders. It also lets you edit folder metadata,

              such as the folder''s name.'
            folder:permission:write: Set, update, or remove permissions assigned to the user's folders.
            asset:read: View the metadata for the user's assets, such as uploaded images.
            asset:write: Upload, update, or delete assets on the user's behalf.
            comment:read: View the comments on the user's designs, and the associated metadata.
            comment:write: Create comments and replies on the user's designs.
            collaboration:event: Receive webhook notifications about events relevant to the user.
            brandtemplate:meta:read: View the metadata of the brand templates associated with the user's brand.
            brandtemplate:content:read: Read the content of the brand templates associated with the user's brand.
            brandtemplate:content:write: Publish brand templates associated with the user's brand.
            profile:read: Read a user's profile and account information.
            openid: Read user information through Open ID Connect (OIDC).
            profile: Read user profile information through OIDC.
            email: Read user email address through OIDC.
          tokenUrl: https://api.canva.com/rest/v1/oauth/token
      type: oauth2