Dub

Dub Partner Applications API

The Partner Applications API from Dub — 3 operation(s) for partner applications.

Operations 3

GET /partners/applications List all pending partner applications #
POST /partners/applications/approve Approve a partner application #
POST /partners/applications/reject Reject a partner application #

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/dub-partner-applications-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

dub-partner-applications-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Dub Analytics Partner Applications API
  description: Dub is the modern link attribution platform for short links, conversion tracking, and affiliate programs.
  version: 0.0.1
  contact:
    name: Dub Support
    email: support@dub.co
    url: https://dub.co/support
  license:
    name: AGPL-3.0 license
    url: https://github.com/dubinc/dub/blob/main/LICENSE.md
servers:
- url: https://api.dub.co
  description: Production API
tags:
- name: Partner Applications
paths:
  /partners/applications:
    get:
      operationId: listPartnerApplications
      x-speakeasy-name-override: list
      summary: List all pending partner applications
      description: Retrieve a paginated list of pending applications for your partner program.
      tags:
      - Partner Applications
      security:
      - token: []
      parameters:
      - in: query
        name: country
        schema:
          description: A filter on the list based on the partner's `country` field.
          example: US
          type: string
        description: A filter on the list based on the partner's `country` field.
      - in: query
        name: groupId
        schema:
          description: A filter on the list based on the partner's `groupId` field.
          example: grp_123
          type: string
        description: A filter on the list based on the partner's `groupId` field.
      - in: query
        name: page
        schema:
          description: The page number for pagination.
          example: 1
          deprecated: false
          type: number
          exclusiveMinimum: 0
        description: The page number for pagination.
      - in: query
        name: pageSize
        schema:
          default: 100
          description: The number of items per page.
          example: 50
          type: number
          maximum: 100
          exclusiveMinimum: 0
        description: The number of items per page.
      responses:
        '200':
          description: The list of pending partner applications.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                    createdAt:
                      type: string
                    partner:
                      type: object
                      properties:
                        id:
                          type: string
                          description: The partner's unique ID on Dub.
                        name:
                          type: string
                          maxLength: 190
                          description: The partner's full legal name.
                        companyName:
                          description: If the partner profile type is a company, this is the partner's legal company name.
                          type:
                          - string
                          - 'null'
                          maxLength: 190
                        email:
                          description: The partner's email address. Should be a unique value across Dub.
                          type:
                          - string
                          - 'null'
                          maxLength: 190
                        image:
                          description: The partner's avatar image.
                          type:
                          - string
                          - 'null'
                        description:
                          description: A brief description of the partner and their background.
                          type:
                          - string
                          - 'null'
                          maxLength: 5000
                        country:
                          description: The partner's country (required for tax purposes).
                          type:
                          - string
                          - 'null'
                        groupId:
                          description: The partner's group ID on Dub.
                          type:
                          - string
                          - 'null'
                        status:
                          type: string
                          enum:
                          - pending
                          - approved
                          - rejected
                          - invited
                          - declined
                          - deactivated
                          - banned
                          - archived
                          description: The status of the partner's enrollment in the program.
                        website:
                          description: The partner's website URL (including the https protocol).
                          type:
                          - string
                          - 'null'
                        youtube:
                          description: The partner's YouTube channel username (e.g. `johndoe`).
                          type:
                          - string
                          - 'null'
                        twitter:
                          description: The partner's Twitter username (e.g. `johndoe`).
                          type:
                          - string
                          - 'null'
                        linkedin:
                          description: The partner's LinkedIn username (e.g. `johndoe`).
                          type:
                          - string
                          - 'null'
                        instagram:
                          description: The partner's Instagram username (e.g. `johndoe`).
                          type:
                          - string
                          - 'null'
                        tiktok:
                          description: The partner's TikTok username (e.g. `johndoe`).
                          type:
                          - string
                          - 'null'
                      required:
                      - id
                      - name
                      - companyName
                      - email
                      - image
                      - country
                      - status
                      additionalProperties: false
                    applicationFormData:
                      type:
                      - array
                      - 'null'
                      items:
                        type: object
                        properties:
                          label:
                            type: string
                          value:
                            type:
                            - string
                            - 'null'
                        required:
                        - label
                        - value
                        additionalProperties: false
                  required:
                  - id
                  - createdAt
                  - partner
                  - applicationFormData
                  additionalProperties: false
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          $ref: '#/components/responses/409'
        '410':
          $ref: '#/components/responses/410'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /partners/applications/approve:
    post:
      operationId: approvePartnerApplication
      x-speakeasy-name-override: approve
      summary: Approve a partner application
      description: Approve a pending partner application to your program. The partner will be enrolled in the specified group and notified of the approval.
      tags:
      - Partner Applications
      security:
      - token: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                partnerId:
                  type: string
                  description: The ID of the partner to approve.
                groupId:
                  description: The ID of the group to assign the partner to. If not provided, the partner will be assigned to the group they applied to, or the program's default group if no application group is set.
                  type:
                  - string
                  - 'null'
              required:
              - partnerId
      responses:
        '200':
          description: The approved partner
          content:
            application/json:
              schema:
                type: object
                properties:
                  partnerId:
                    type: string
                    description: The ID of the approved partner.
                required:
                - partnerId
                additionalProperties: false
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          $ref: '#/components/responses/409'
        '410':
          $ref: '#/components/responses/410'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /partners/applications/reject:
    post:
      operationId: rejectPartnerApplication
      x-speakeasy-name-override: reject
      summary: Reject a partner application
      description: Reject a pending partner application to your program. The partner will be notified via email that their application was not approved.
      tags:
      - Partner Applications
      security:
      - token: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                partnerId:
                  type: string
                  description: The ID of the partner to reject.
                rejectionReason:
                  description: The reason for rejecting the partner application. This will be shared with the partner via email.
                  type: string
                  enum:
                  - needsMoreDetail
                  - doesNotMeetRequirements
                  - notTheRightFit
                  - other
                rejectionNote:
                  description: Additional details about the rejection. This will be shared with the partner via email.
                  type: string
                  maxLength: 500
                reapplicationTimeframe:
                  default: standard
                  description: 'The mode for reapplying for the program. `instant`: The partner can reapply immediately. `standard`: The partner can reapply after 30 days. `never`: The partner can never reapply for the program. Defaults to `standard` if undefined.'
                  type: string
                  enum:
                  - instant
                  - standard
                  - never
                flagForFraud:
                  description: 'Whether to flag the partner for fraud review by the Dub team. Cannot be combined with `reapplicationTimeframe: instant`.'
                  type: boolean
                flagForFraudReason:
                  description: The reason for flagging the partner for fraud. Required when flagForFraud is true.
                  type: string
                  maxLength: 2000
              required:
              - partnerId
      responses:
        '200':
          description: The rejected partner
          content:
            application/json:
              schema:
                type: object
                properties:
                  partnerId:
                    type: string
                    description: The ID of the rejected partner.
                required:
                - partnerId
                additionalProperties: false
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          $ref: '#/components/responses/409'
        '410':
          $ref: '#/components/responses/410'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
components:
  responses:
    '400':
      description: The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
      content:
        application/json:
          schema:
            x-speakeasy-name-override: BadRequest
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - bad_request
                    description: A short code indicating the error code returned.
                    example: bad_request
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#bad-request
                required:
                - code
                - message
            required:
            - error
    '401':
      description: Although the HTTP standard specifies "unauthorized", semantically this response means "unauthenticated". That is, the client must authenticate itself to get the requested response.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: Unauthorized
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - unauthorized
                    description: A short code indicating the error code returned.
                    example: unauthorized
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#unauthorized
                required:
                - code
                - message
            required:
            - error
    '422':
      description: The request was well-formed but was unable to be followed due to semantic errors.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: UnprocessableEntity
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - unprocessable_entity
                    description: A short code indicating the error code returned.
                    example: unprocessable_entity
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#unprocessable-entity
                required:
                - code
                - message
            required:
            - error
    '404':
      description: The server cannot find the requested resource.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: NotFound
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - not_found
                    description: A short code indicating the error code returned.
                    example: not_found
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#not-found
                required:
                - code
                - message
            required:
            - error
    '429':
      description: The user has sent too many requests in a given amount of time ("rate limiting")
      content:
        application/json:
          schema:
            x-speakeasy-name-override: RateLimitExceeded
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - rate_limit_exceeded
                    description: A short code indicating the error code returned.
                    example: rate_limit_exceeded
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#rate-limit_exceeded
                required:
                - code
                - message
            required:
            - error
    '409':
      description: This response is sent when a request conflicts with the current state of the server.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: Conflict
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - conflict
                    description: A short code indicating the error code returned.
                    example: conflict
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#conflict
                required:
                - code
                - message
            required:
            - error
    '403':
      description: The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401 Unauthorized, the client's identity is known to the server.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: Forbidden
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - forbidden
                    description: A short code indicating the error code returned.
                    example: forbidden
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#forbidden
                required:
                - code
                - message
            required:
            - error
    '500':
      description: The server has encountered a situation it does not know how to handle.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: InternalServerError
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - internal_server_error
                    description: A short code indicating the error code returned.
                    example: internal_server_error
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#internal-server_error
                required:
                - code
                - message
            required:
            - error
    '410':
      description: This response is sent when the requested content has been permanently deleted from server, with no forwarding address.
      content:
        application/json:
          schema:
            x-speakeasy-name-override: InviteExpired
            type: object
            properties:
              error:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - invite_expired
                    description: A short code indicating the error code returned.
                    example: invite_expired
                  message:
                    x-speakeasy-error-message: true
                    type: string
                    description: A human readable explanation of what went wrong.
                    example: The requested resource was not found.
                  doc_url:
                    type: string
                    description: A link to our documentation with more details about this error code
                    example: https://dub.co/docs/api-reference/errors#invite-expired
                required:
                - code
                - message
            required:
            - error
  securitySchemes:
    token:
      type: http
      description: Default authentication mechanism
      scheme: bearer
      x-speakeasy-example: DUB_API_KEY