SponsorUnited Brand API

Brand

Operations 15

GET /api/company List brands #
POST /api/company Create a new brand #
GET /api/company/download Export brands to CSV #
GET /api/company/{id} Get brand details #
PUT /api/company/{id} Update a brand #
DELETE /api/company/{id} Delete a brand #
PUT /api/company/{id}/approved Approve a brand #
PUT /api/company/{id}/social-handles Add social handle to brand #
PUT /api/company/{id}/social-handles/multiple Add multiple social handles to brand #
PUT /api/company/quick-edit/{id} Quick edit a brand #
GET /api/company/exists Check if brand exists #
PUT /api/company/{old_id}/reassign/{new_id} Reassign brand data #
POST /api/brand/{id}/properties/{year} Get brand deals by season #
POST /api/brand/{id}/properties/metadata/{year} Get brand deals metadata #
PUT /api/company/{id}/exclude-from-transcribe Exclude brand from transcribe #

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/sponsorunited-brand-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

sponsorunited-brand-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SponsorUnited Brand API
  version: v1
  description: Brand
tags:
- name: Brand
  description: Brand
paths:
  /api/company:
    get:
      tags:
      - Brand
      summary: List brands
      description: Returns a paginated list of brands with optional filtering by categories, subcategories, markets, and name. Supports sorting and includes revenue counts when requested
      operationId: 3e0bffb951b3f31f83aadc004638122b
      parameters:
      - name: CompanyIndexRequest
        in: query
        schema:
          $ref: '#/components/schemas/CompanyIndexRequest'
      responses:
        '200':
          description: A list of companies with some relations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyIndexResource'
      security:
      - bearerAuth: []
    post:
      tags:
      - Brand
      summary: Create a new brand
      description: Creates a new brand with the provided data. Auto-approves if user has the appropriate permission
      operationId: faf1545d2af89079ca55c4f9ed6ea302
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - name
              - logo
              - category_id
              - subcategory_id
              - website
              - locations
              properties:
                name:
                  description: Brand name
                  type: string
                logo:
                  description: Logo image URL or ID
                  type: string
                category_id:
                  description: Category ID
                  type: integer
                subcategory_id:
                  description: Subcategory ID
                  type: integer
                corporate_phone:
                  type:
                  - string
                  - 'null'
                website:
                  description: Brand website URL
                  type: string
                linkedin:
                  description: LinkedIn URL
                  type:
                  - string
                  - 'null'
                locations:
                  type: array
                  items:
                    type: object
                youtube:
                  type:
                  - string
                  - 'null'
                twitter:
                  type:
                  - string
                  - 'null'
                facebook:
                  type:
                  - string
                  - 'null'
                instagram:
                  type:
                  - string
                  - 'null'
                twitch:
                  type:
                  - string
                  - 'null'
                tiktok:
                  type:
                  - string
                  - 'null'
                synopsis:
                  type:
                  - string
                  - 'null'
                markets:
                  type:
                  - array
                  - 'null'
                  items:
                    type: object
                organizations:
                  type:
                  - array
                  - 'null'
                  items:
                    type: integer
                agencies:
                  type:
                  - array
                  - 'null'
                  items:
                    type: object
                brands:
                  type:
                  - array
                  - 'null'
                  items:
                    type: object
                parent_company_id:
                  type:
                  - integer
                  - 'null'
              type: object
      responses:
        '200':
          description: Brand created successfully
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthenticated
        '403':
          description: Forbidden
        '422':
          description: Validation error or duplicate entry
      security:
      - bearerAuth: []
  /api/company/download:
    get:
      tags:
      - Brand
      summary: Export brands to CSV
      description: Exports a list of brands matching the filter criteria as a downloadable CSV file. Supports the same filters as the list endpoint
      operationId: b199230656befd10721e0df2d25bbd64
      responses:
        '200':
          description: A response with brands
      security:
      - bearerAuth: []
  /api/company/{id}:
    get:
      tags:
      - Brand
      summary: Get brand details
      description: Returns detailed information about a specific brand including agencies, contacts, markets, organizations, social handles, financial data (single entry for the most recent fiscal year, with revenue tier), the list of available revenue tiers (financial_data_available_revenue_tiers), and related data
      operationId: 29b0f8f11c5e74b0c7a9f94f223c0abc
      parameters:
      - name: id
        in: path
        description: Brand ID
        required: true
        schema:
          type: integer
      - name: with_audits
        in: query
        description: Include audit counts
        required: false
        schema:
          type: boolean
      - name: with_revenues_count
        in: query
        description: Include revenue counts
        required: false
        schema:
          type: boolean
      - name: with_has_spend_tracker_data
        in: query
        description: Include spend tracker data availability flag
        required: false
        schema:
          type: boolean
      - name: with_trashed
        in: query
        description: Include soft-deleted brands
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Brand details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyResource'
        '401':
          description: Unauthenticated
        '404':
          description: Brand not found
      security:
      - bearerAuth: []
    put:
      tags:
      - Brand
      summary: Update a brand
      description: Updates an existing brand with the provided data including social handles, markets, organizations, and agencies
      operationId: dba5691bd7818c368accfd785048ea90
      parameters:
      - name: id
        in: path
        description: Brand ID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - name
              - logo
              - category_id
              - subcategory_id
              - website
              - locations
              properties:
                name:
                  type: string
                logo:
                  type: string
                category_id:
                  type: integer
                subcategory_id:
                  type: integer
                corporate_phone:
                  type:
                  - string
                  - 'null'
                website:
                  type: string
                linkedin:
                  type:
                  - string
                  - 'null'
                locations:
                  type: array
                  items:
                    type: object
                youtube:
                  type:
                  - string
                  - 'null'
                twitter:
                  type:
                  - string
                  - 'null'
                facebook:
                  type:
                  - string
                  - 'null'
                instagram:
                  type:
                  - string
                  - 'null'
                twitch:
                  type:
                  - string
                  - 'null'
                tiktok:
                  type:
                  - string
                  - 'null'
                synopsis:
                  type:
                  - string
                  - 'null'
                markets:
                  type:
                  - array
                  - 'null'
                  items:
                    type: object
                organizations:
                  type:
                  - array
                  - 'null'
                  items:
                    type: integer
                agencies:
                  type:
                  - array
                  - 'null'
                  items:
                    type: object
                brands:
                  type:
                  - array
                  - 'null'
                  items:
                    type: object
                parent_company_id:
                  type:
                  - integer
                  - 'null'
                primary_profile:
                  type:
                  - object
                  - 'null'
                secondary_profiles:
                  type:
                  - array
                  - 'null'
                  items:
                    type: object
                financial_data:
                  description: 'Manual correction of the brand''s financial data, upserted by fiscal year and marked as a MANUAL estimate. A brand keeps a single manual row: sending a different fiscal year re-dates the brand''s current financial data and any other manual rows (leftovers of previous fiscal-year edits) are removed, so the edit is what subsequent reads return. The revenue tier is not editable — it is derived on the backend from the revenue being saved (estimated figure for public companies, midpoint of the min/max range for private ones) and cleared when the revenue is cleared. Omit the key entirely when there is nothing to change'
                  required:
                  - most_recent_fiscal_year
                  properties:
                    most_recent_fiscal_year:
                      type: integer
                      example: 2025
                    revenue_range_low_usd:
                      description: Lower bound of the revenue range in USD; the revenue is edited as this pair for public and private companies alike. Must be sent together with revenue_range_high_usd; both null clears the range
                      type:
                      - number
                      - 'null'
                      example: 1900000000
                    revenue_range_high_usd:
                      description: Upper bound of the revenue range in USD. Must be greater than or equal to revenue_range_low_usd; for public companies the bounds must be equal (the single reported figure)
                      type:
                      - number
                      - 'null'
                      example: 2400000000
                    is_public:
                      description: Public/private toggle. Switching to private is rejected while a ticker is set. Public companies store their single revenue figure as equal range bounds; private companies may carry a real spread
                      type: boolean
                    ticker:
                      description: Stock ticker symbol; only editable for public companies
                      type:
                      - string
                      - 'null'
                      maxLength: 10
                      example: KO
                  type: object
              type: object
      responses:
        '200':
          description: Brand updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyResource'
        '401':
          description: Unauthenticated
        '403':
          description: Forbidden
        '404':
          description: Brand not found
        '422':
          description: Validation error
      security:
      - bearerAuth: []
    delete:
      tags:
      - Brand
      summary: Delete a brand
      description: Soft deletes a brand and cleans up associated data including contacts, social handles, and profile links. Prevents deletion of parent brands that have child brands. Requires delete administration companies permission
      operationId: a073402836212623826fbe1e5a591454
      parameters:
      - name: id
        in: path
        description: Brand ID
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: Empty on success.
        '200':
          description: Cannot remove Brand
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
      security:
      - bearerAuth: []
  /api/company/{id}/approved:
    put:
      tags:
      - Brand
      summary: Approve a brand
      description: Approves a brand by setting its approved status. Requires approve company permission
      operationId: d30b29c4f2531b7c2171e1a34a768789
      parameters:
      - name: id
        in: path
        description: Brand ID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                approved:
                  description: Approval status
                  type: boolean
              type: object
      responses:
        '200':
          description: Brand approved successfully
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthenticated
        '403':
          description: Forbidden
        '404':
          description: Brand not found
      security:
      - bearerAuth: []
  /api/company/{id}/social-handles:
    put:
      tags:
      - Brand
      summary: Add social handle to brand
      description: Assigns an unmatched social handle to a brand and triggers a rescan
      operationId: a970398ff43ab364470641b8118cc660
      parameters:
      - name: id
        in: path
        description: Brand ID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - handle
              - type
              properties:
                handle:
                  description: Social media handle
                  type: string
                type:
                  description: Social platform type (twitter, facebook, instagram, tiktok)
                  type: string
              type: object
      responses:
        '200':
          description: Social handle added successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyResource'
        '401':
          description: Unauthenticated
        '422':
          description: Validation error
        '500':
          description: Failed to add social handle
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
      security:
      - bearerAuth: []
  /api/company/{id}/social-handles/multiple:
    put:
      tags:
      - Brand
      summary: Add multiple social handles to brand
      description: Assigns multiple unmatched social handles to a brand
      operationId: b64f45988c333b73cc71385e3a099eeb
      parameters:
      - name: id
        in: path
        description: Brand ID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - handles
              - type
              properties:
                handles:
                  description: Array of social media handles
                  type: array
                  items:
                    type: string
                type:
                  description: Social platform type
                  type: string
                  enum:
                  - twitter
                  - facebook
                  - instagram
                  - tiktok
              type: object
      responses:
        '200':
          description: Social handles added successfully
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Social handles added successfully
                type: object
        '401':
          description: Unauthenticated
        '422':
          description: Validation error
        '500':
          description: Failed to add social handles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
      security:
      - bearerAuth: []
  /api/company/quick-edit/{id}:
    put:
      tags:
      - Brand
      summary: Quick edit a brand
      description: Performs a quick update on a brand with limited fields (category, subcategory, parent company, markets)
      operationId: f5debdcf80b4e606bdc3320e60005fae
      parameters:
      - name: id
        in: path
        description: Brand ID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - category_id
              - subcategory_id
              properties:
                category_id:
                  description: Category ID
                  type: integer
                subcategory_id:
                  description: Subcategory ID
                  type: integer
                parent_company_id:
                  description: Parent company ID
                  type:
                  - integer
                  - 'null'
                markets:
                  type:
                  - array
                  - 'null'
                  items:
                    type: object
              type: object
      responses:
        '200':
          description: Brand updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyResource'
        '401':
          description: Unauthenticated
        '404':
          description: Brand not found
        '422':
          description: Validation error
      security:
      - bearerAuth: []
  /api/company/exists:
    get:
      tags:
      - Brand
      summary: Check if brand exists
      description: Checks if a brand with the given name already exists in the database
      operationId: e178f5a55a7e826c62dfa6e9d154e71f
      parameters:
      - name: name
        in: query
        description: Brand name to check
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Count of brands with the given name
          content:
            application/json:
              schema:
                type: integer
              example: 0
        '401':
          description: Unauthenticated
      security:
      - bearerAuth: []
  /api/company/{old_id}/reassign/{new_id}:
    put:
      tags:
      - Brand
      summary: Reassign brand data
      description: Reassigns all data (audits, contacts, locations, etc.) from one brand to another. Adds the old brand's name as a synonym for the new brand
      operationId: c2802e6e6b434a4ab6f91d92259e5736
      parameters:
      - name: old_id
        in: path
        description: Source brand ID to reassign from
        required: true
        schema:
          type: integer
      - name: new_id
        in: path
        description: Target brand ID to reassign to
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Reassignment successful, returns intent measurement data
          content:
            application/json:
              schema:
                type: array
                items:
                  properties:
                    id:
                      type: integer
                    name:
                      type: string
                    created_at:
                      type: string
                      format: date-time
                    updated_at:
                      type: string
                      format: date-time
                    audits_count:
                      type: integer
                  type: object
        '401':
          description: Unauthenticated
        '404':
          description: Brand not found
        '500':
          description: Operation not permitted or query failure
      security:
      - bearerAuth: []
  /api/brand/{id}/properties/{year}:
    post:
      tags:
      - Brand
      summary: Get brand deals by season
      description: Returns paginated brand deals for a specific season with filtering options. Supports CSV download
      operationId: a195f821ab9ad56096e70493cf181f51
      parameters:
      - name: id
        in: path
        description: Brand ID
        required: true
        schema:
          type: integer
      - name: year
        in: path
        description: Season year. The segment may be omitted, in which case the current year is used
        required: true
        schema:
          type: string
      - name: per_page
        in: query
        description: Number of results per page
        required: false
        schema:
          type: integer
      - name: page
        in: query
        description: Page number
        required: false
        schema:
          type: integer
      - name: download
        in: query
        description: Download as CSV
        required: false
        schema:
          type: boolean
      - name: with_brands
        in: query
        description: Include child brands
        required: false
        schema:
          type: boolean
      - name: property_type
        in: query
        description: Filter by property type IDs (comma-separated)
        required: false
        schema:
          type: string
      - name: market
        in: query
        description: Filter by market IDs (comma-separated)
        required: false
        schema:
          type: string
      - name: item_type
        in: query
        description: 'Filter by asset types (comma-separated: sponsor, digital, tv, radio, vendor, other)'
        required: false
        schema:
          type: string
      - name: order_by
        in: query
        description: Sort field
        required: false
        schema:
          type: string
          enum:
          - property
          - property_type
          - market
          - total_assets_count
          - deal_revenues
      - name: order_direction
        in: query
        description: Sort direction
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
      responses:
        '200':
          description: Brand deals data with metadata
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthenticated
      security:
      - bearerAuth: []
  /api/brand/{id}/properties/metadata/{year}:
    post:
      tags:
      - Brand
      summary: Get brand deals metadata
      description: Returns metadata for brand deals filtering including available properties, property types, markets, item types, and spend range
      operationId: 81ad3bfcad5cac9e389f292c5e33ef20
      parameters:
      - name: id
        in: path
        description: Brand ID
        required: true
        schema:
          type: integer
      - name: year
        in: path
        description: Season year. The segment may be omitted, in which case the current year is used
        required: true
        schema:
          type: string
      - name: with_brands
        in: query
        description: Include child brands
        required: false
        schema:
          type: boolean
      responses:
        '200':
          description: Filter metadata
          content:
            application/json:
              schema:
                properties:
                  properties:
                    type: array
                    items:
                      properties:
                        id:
                          type: integer
                        text:
                          type: string
                      type: object
                  property_types:
                    type: array
                    items:
                      properties:
                        id:
                          type: integer
                        text:
                          type: string
                      type: object
                  markets:
                    type: array
                    items:
                      properties:
                        id:
                          type: integer
                        text:
                          type: string
                      type: object
                  item_types:
                    type: array
                    items:
                      properties:
                        name:
                          type: string
                        text:
                          type: string
                      type: object
                  spend_range:
                    properties:
                      min:
                        type: integer
                      max:
                        type: integer
                    type: object
                type: object
        '401':
          description: Unauthenticated
      security:
      - bearerAuth: []
  /api/company/{id}/exclude-from-transcribe:
    put:
      tags:
      - Brand
      summary: Exclude brand from transcribe
      description: Sets the exclude_from_transcribe flag for a brand
      operationId: adfac58a5a03047c729a5f88a48f7c7b
      parameters:
      - name: id
        in: path
        description: Brand ID
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                exclude:
                  description: Whether to exclude from transcribe
                  type: boolean
              type: object
      responses:
        '200':
          description: Brand updated successfully
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthenticated
        '404':
          description: Brand not found
      security:
      - bearerAuth: []
components:
  schemas:
    Company:
      properties:
        id:
          type: integer
        parent_company_id:
          type: integer
        subcategory_id:
          type: integer
        categories_id:
          type: integer
        name:
          type: string
        synopsis:
          type: string
        corporate_phone:
          type: string
        website:
          type: string
        linkedin:
          type: string
        linkedin_id_url:
          type: string
        linkedin_employees:
          type: string
        facebook:
          type: string
        twitter:
          type: string
        instagram:
          type: string
        twitch:
          type: string
        tiktok:
          type: string
        youtube:
          type: string
        exclude_from_social_scan:
          type: boolean
        exclude_from_transcribe:
          type: boolean
        feed_url:
          type: string
        statistics:
          type: string
        no_of_employees:
          type: string
        priority_markets:
          type: string
        parent_company:
          type: string
        ad_agency:
          type: string
        existing:
          type: string
        owned_by:
          type: string
        approved:
          type: boolean
        approved_by:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        deleted_at:
          type: string
          format: date-time
      type: object
    CompanyResource:
      description: Brand details with related data (agencies, organizations, primary/secondary profiles)
      type: object
    CompanyIndexRequest:
      properties:
        order_by:
          type: string
        order:
          type: string
        only_unapproved:
          type: boolean
        name:
          type: string
        categories:
          type: string
          example: 1,2,3
        subcategories:
          type: string
          example: 1,2,3
        markets:
          type: string
          example: 1,2,3
      type: object
    CompanyIndexResource:
      type: array
      items:
        $ref: '#/components/schemas/Company'
    ErrorResource:
      properties:
        error:
          type: string
          example: An error occurred
      type: object
  securitySchemes:
    bearerAuth:
      type: http
      name: JWT Authentication
      in: header
      bearerFormat: JWT
      scheme: bearer
    apiKeyAuth:
      type: apiKey
      description: 'Service API key for external services (ai-api, chat-api). Generate with: php artisan su:api-token:generate'
      name: X-API-Key
      in: header