---
title: "Create a new Issuer"
method: POST
path: "/v2/issuers"
tags: ["Issuers"]
---

# Create a new Issuer

`POST /v2/issuers`

Creating an Issuer within an Organization (via `organizationId`) additionally requires the `rw:org` scope.

## Query parameters

- `include_staff` string

## Request body

- V2IssuerForCreation
  - `badgrDomain` string, nullable — Organization domain host
  - `createdBy` string, nullable — User who created this issuer
  - `description` string, nullable — Short description of the Issuer
  - `email` string, email, nullable, required — Contact email for the Issuer
  - `image` string, nullable — Image of the issuer as a base64-encoded data URI. External URLs are not allowed.
  - `name` string, nullable, required — Name of the issuer
  - `organizationId` string, nullable — The ID of the organization which this issuer should be associated with. Requires organization write access.
  - `originalJson` string, nullable — The original OB JSON of the issuer if it was imported
  - `sourceUrl` string, uri, nullable — The original URL of the issuer if it was imported
  - `staff` V2IssuerStaffForCreation[], nullable — Staff members of this issuer.
    - `role` 'owner' | 'editor' | 'staff', nullable, required — Role of the user in the issuer.
    - `user` string, required — Unique ID of the user.
  - `url` string, uri, nullable, required — Homepage or website associated with the Issuer

## Response `201`

Issuer created

- LegacyResponseWrapperV2Issuer
  - `errorCode` string, nullable
  - `fieldErrors` object, required
  - `latestTermsVersion` integer, nullable
  - `nonFieldErrors` string[], required
  - `result` V2Issuer[], required
    - `badgeSkillLinkingPreferences` ApiBadgeSkillLinkingPreferences, required — Skill library preferences
      - `indeedRegion` string, nullable — Region used if badge skill link mode is set to INDEED
      - `linkMode` 'DEFAULT' | 'INDEED', required — Linking strategy for skill on the UI
      - `serverUri` string, uri, nullable — Uri used in case of OSMT skill library
      - `type` 'NONE' | 'FLEXIBLE' | 'OSMT' | 'TALENT_NEURON', required — Type for the badge skill source library
    - `badgrDomain` string, nullable — Organization domain host
    - `createdAt` string, date-time, nullable — Timestamp when the Issuer was created
    - `createdBy` string, nullable — Entity ID of the user who created this issuer
    - `description` string, nullable — Short description of the Issuer
    - `email` string, email, nullable — Contact email for the Issuer
    - `entityId` string, required — Unique identifier for this Issuer
    - `entityType` string, required
    - `extensions` object, required
    - `id` string, required
    - `image` string, nullable — Image of the issuer. Most commonly an URL.
    - `imagePath` string, nullable — Internal image path.
    - `name` string, required — Name of the issuer
    - `openBadgeId` string, uri, required — URL of the OpenBadge compliant json
    - `organizationId` string, nullable — The ID of the organization which this issuer is associated with.
    - `originalJson` string, nullable — The original OB JSON of the issuer if it was imported
    - `preferences` ApiIssuerPreferences — Preferences for this issuer
      - `customPropertyDefinitions` ApiCustomEntityPropertyDefinition[], required — Custom entity property definitions for this issuer
        - `choiceValues` ApiCustomEntityPropertyChoiceValue[], required — Choice values for this property
          - `id` string, required — ID for this choice value
          - `label` string, required — Label for this choice value
        - `label` string, required — Label for this property
        - `propertyId` string, required — ID for this property
        - `propertyType` 'NUMBER' | 'STRING_CHOICE' | 'STRING_CHOICE_MULTI' | 'STRING_SINGLE_LINE' | 'STRING_MARKDOWN', required — Type of the custom entity property
        - `public` boolean, required — Whether this property is public
        - `required` boolean, required — Whether this property is required
        - `subLabel` string, nullable — Sub-label for this property
        - `targetEntityType` 'BADGE_CLASS', required — Target entity type for this property
      - `defaultPrintCertTemplateId` string, nullable — Default print certificate template ID
      - `enabledPrintCertTemplateIds` string[], required — Enabled print certificate template IDs
      - `ob3Enabled` boolean, required — Whether OB3 is enabled for this issuer
      - `showOnOrgPublicPage` boolean, required — Whether this issuer is shown on the organization's public page
    - `source` string, nullable — The original source of the issuer
    - `sourceUrl` string, uri, nullable — The original URL of the issuer if it was imported
    - `staff` V2IssuerStaff[], nullable — Staff members of this issuer.
      - `orgRole` 'BillingAdmin' | 'ContentAdmin' | 'GeneralAdmin', nullable — Organization-level staff role, if the user is an admin of the parent organization.
      - `role` 'staff' | 'editor' | 'owner', required
      - `user` string — Unique ID of the user.
      - `userProfile` BadgrApiUser — Profile of the user
        - `agreedTermsVersion` integer, nullable — The version of the terms of use that the user has agreed to
        - `badgrDomain` string, nullable — The front-end domain of badgr (whitelabel) the user should use
        - `emails` BadgrUserEmail[], required — Emails of the user
          - `email` string, email, required — Email address
          - `primary` boolean, required
          - `verified` boolean, required
        - `entityId` string, required — Unique identifier for this BadgeUser
        - `entityType` string, required
        - `firstName` string, required — Given name
        - `hasPasswordSet` boolean, nullable
        - `lastName` string, required — Family name
        - `marketingOptIn` boolean, nullable — Indicates if the user has opted in to marketing communications
        - `telephone` string[], required — List of verified telephone identifiers associated with the user profile
        - `url` string[], required — List of verified URL identifiers associated with the user profile
    - `url` string, uri, required — Homepage or website associated with the Issuer
  - `status` BadgrStatus, required
    - `description` string, required
    - `success` boolean, required
  - `timestamp` string, date-time, nullable
  - `validationErrors` string[], required
  - `warnings` object, required

## Other responses

- `400` — Bad Request
- `404` — Not Found
- `429` — Too Many Requests
- `500` — Internal Server Error

---

[API](https://skmtc.net/instructure/apis/public-api-docs.md) · [All operations](https://skmtc.net/instructure/apis/public-api-docs/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/instructure/public-api-docs/revisions/44eb39b4bd65/schema)
