> ## Documentation Index
> Fetch the complete documentation index at: https://docs.targeter.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Get publisher platforms

> List the channels Targeter may request when creating or updating an ad

## Overview

Return the publisher channels Targeter is allowed to pass in `publisher_platforms` on [Create ad](/integrations/ads/create) and [Update ad](/integrations/ads/update).

`id` must be stable. Targeter stores these ids and sends them back unchanged. `formats` tells Targeter which creative types (`image`, `video`, `html5`) each channel accepts.

## Request

### Headers

* `Authorization: Bearer {token}` (required)

### Example Request

```bash theme={null}
curl "https://publisher.example.com/v1/publisher-platforms" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

## Response

### Success (200)

<ResponseField name="publisher_platforms" type="object[]">
  Channels available for delivery
</ResponseField>

<ResponseField name="publisher_platforms.id" type="string">
  Stable platform id to pass when creating an ad
</ResponseField>

<ResponseField name="publisher_platforms.name" type="string">
  Human-readable platform name
</ResponseField>

<ResponseField name="publisher_platforms.formats" type="string[]">
  Creative formats this platform accepts: `image`, `video`, and/or `html5`
</ResponseField>

```json theme={null}
{
    "publisher_platforms": [
        {
            "id": "drammens_tidende",
            "name": "Drammens Tidende",
            "formats": ["image", "video", "html5"]
        },
        {
            "id": "nettavisen",
            "name": "Nettavisen",
            "formats": ["image", "video", "html5"]
        },
        {
            "id": "romerikes_blad",
            "name": "Romerikes Blad",
            "formats": ["image", "video", "html5"]
        }
    ]
}
```

## Error Responses

### 401 - Unauthorized

```json theme={null}
{
    "error": "Missing or invalid Authorization header"
}
```

### 500 - Server Error

```json theme={null}
{
    "error": "Unexpected server error. Please try again later."
}
```


## OpenAPI

````yaml integrations/openapi.json GET /publisher-platforms
openapi: 3.1.0
info:
  title: Targeter Ideal Publisher API
  description: >-
    Contract Targeter expects from publisher and media platforms it creates ads
    on and fetches insights from. Implement these endpoints so Targeter can
    manage offices, ads, and reporting against your system.
  version: 1.0.0
  contact:
    name: Targeter Integration Support
servers:
  - url: https://{publisher_host}/v1
    description: Publisher API host (provided during integration setup)
    variables:
      publisher_host:
        default: publisher.example.com
security:
  - BearerAuth: []
tags:
  - name: Offices
    description: Broker or advertiser offices that ads are billed and attributed to
  - name: Ads
    description: Create, update, pause, resume, and delete ads
  - name: Insights
    description: Performance reporting for ads Targeter has created
  - name: Platforms
    description: Publisher channels available for delivery
paths:
  /publisher-platforms:
    get:
      tags:
        - Platforms
      summary: Get publisher platforms
      description: >-
        Return the publisher channels Targeter may pass in `publisher_platforms`
        when creating or updating an ad. Use this so Targeter only requests
        placements your system can deliver.
      operationId: getPublisherPlatforms
      responses:
        '200':
          description: Available publisher platforms
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublisherPlatformsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    PublisherPlatformsResponse:
      type: object
      required:
        - publisher_platforms
      properties:
        publisher_platforms:
          type: array
          items:
            $ref: '#/components/schemas/PublisherPlatform'
    PublisherPlatform:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          description: Stable platform id to pass in `publisher_platforms`
          example: drammens_tidende
        name:
          type: string
          description: Human-readable platform name
          example: Drammens Tidende
        formats:
          type: array
          description: Creative formats this platform accepts
          items:
            type: string
            enum:
              - image
              - video
              - html5
          example:
            - image
            - video
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Error message
          example: Missing required field
        details:
          type: array
          description: Per-field validation issues
          items:
            type: object
            required:
              - message
            properties:
              path:
                type: array
                items:
                  type: string
                example:
                  - material
                  - target_url
              message:
                type: string
                example: Target URL is required
  responses:
    Unauthorized:
      description: Missing Authorization header, or invalid or expired token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missingHeader:
              value:
                error: Missing or invalid Authorization header
            invalidToken:
              value:
                error: Invalid or expired token
    ServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Unexpected server error. Please try again later.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        API token issued to Targeter during integration setup. Send as
        `Authorization: Bearer <token>`.

````