> For the complete documentation index, see [llms.txt](https://developers.panxo.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.panxo.ai/integrations/ssp-managed-accounts.md).

# SSP Managed Accounts

Technical documentation for SSPs to integrate Panxo as an external demand partner.

***

## 1. Company Information

| Field                 | Value                            |
| --------------------- | -------------------------------- |
| **Company Name**      | Panxo                            |
| **Platform Type**     | DSP (Demand-Side Platform)       |
| **Specialization**    | AI-referred traffic monetization |
| **Website**           | <https://panxo.ai>               |
| **Technical Contact** | <tech@panxo.ai>                  |

***

## 2. OpenRTB Endpoint

| Field               | Value                                                      |
| ------------------- | ---------------------------------------------------------- |
| **Endpoint URL**    | `https://panxo-sys.com/openrtb/2.5/bid?key={PROPERTY_KEY}` |
| **Protocol**        | OpenRTB 2.5                                                |
| **Method**          | POST                                                       |
| **Content-Type**    | application/json                                           |
| **Response Format** | OpenRTB 2.5 JSON                                           |

### Endpoint Parameters

| Parameter | Required | Description                                              |
| --------- | -------- | -------------------------------------------------------- |
| `key`     | Yes      | Unique property key provided by Panxo for each publisher |

### Example Endpoint

```
https://panxo-sys.com/openrtb/2.5/bid?key=abc123xyz
```

***

## 3. Cookie Sync (User Sync)

Cookie synchronization is **required** for Panxo to identify users and provide relevant bids.

| Field               | Value                                                 |
| ------------------- | ----------------------------------------------------- |
| **Sync URL**        | `https://panxo-sys.com/usersync?redir={REDIRECT_URL}` |
| **Cookie Name**     | `_psid`                                               |
| **Cookie Domain**   | `.panxo-sys.com`                                      |
| **Cookie Duration** | 1 year                                                |
| **Sync Type**       | Redirect (image pixel)                                |

### Sync URL Parameters

| Parameter | Description                                                               |
| --------- | ------------------------------------------------------------------------- |
| `redir`   | URL-encoded redirect URL. Panxo will append `uid={PANXO_UID}` to this URL |

### Example Sync Flow

{% stepper %}
{% step %}
SSP calls:

`https://panxo-sys.com/usersync?redir=https%3A%2F%2Fssp.example.com%2Fsync%3Fdsp%3Dpanxo%26uid%3D`
{% endstep %}

{% step %}
Panxo redirects to:

`https://ssp.example.com/sync?dsp=panxo&uid=abc123-def456-...`
{% endstep %}

{% step %}
SSP stores mapping:

`panxo_uid = abc123-def456-...`
{% endstep %}

{% step %}
In bid requests, SSP sends:

`user.buyeruid = abc123-def456-...`
{% endstep %}
{% endstepper %}

### Alternative Sync Endpoint

For SSPs that support iframe-based sync:

```
https://panxo-sys.com/usersync/iframe?callback={CALLBACK_URL}
```

***

## 4. Bid Request Requirements

### Required Fields

| Field                        | Description                          |
| ---------------------------- | ------------------------------------ |
| `id`                         | Unique bid request ID                |
| `imp[]`                      | At least one impression object       |
| `imp[].id`                   | Impression ID                        |
| `imp[].banner`               | Banner object (required for display) |
| `site.domain` or `site.page` | Domain where ad will be shown        |
| `user.buyeruid`              | **Panxo user ID from cookie sync**   |

### Recommended Fields

| Field                   | Description                                |
| ----------------------- | ------------------------------------------ |
| `tmax`                  | Maximum response time (ms). Default: 500ms |
| `device.ua`             | User agent string                          |
| `device.ip`             | User IP address                            |
| `device.geo`            | Geographic information                     |
| `imp[].bidfloor`        | Floor price in CPM                         |
| `imp[].banner.format[]` | Array of accepted sizes                    |

### Supported Banner Sizes

| Size    | Description         |
| ------- | ------------------- |
| 300x250 | Medium Rectangle    |
| 728x90  | Leaderboard         |
| 160x600 | Wide Skyscraper     |
| 300x600 | Half Page           |
| 320x50  | Mobile Banner       |
| 320x100 | Large Mobile Banner |

### Example Bid Request

```json
{
  "id": "req-12345",
  "imp": [{
    "id": "imp-1",
    "banner": {
      "format": [
        {"w": 300, "h": 250},
        {"w": 728, "h": 90}
      ]
    },
    "bidfloor": 0.50
  }],
  "site": {
    "domain": "example.com",
    "page": "https://example.com/article/123"
  },
  "device": {
    "ua": "Mozilla/5.0...",
    "ip": "203.0.113.50",
    "geo": {
      "country": "USA"
    }
  },
  "user": {
    "buyeruid": "abc123-def456-789xyz"
  },
  "tmax": 500
}
```

***

## 5. Bid Response Format

### Response Codes

| Code | Description         |
| ---- | ------------------- |
| 200  | Bid submitted       |
| 204  | No bid (no content) |

### Response Fields

| Field                     | Description                |
| ------------------------- | -------------------------- |
| `id`                      | Echo of bid request ID     |
| `seatbid[].seat`          | Always "panxo"             |
| `seatbid[].bid[].id`      | Unique bid ID              |
| `seatbid[].bid[].impid`   | Impression ID being bid on |
| `seatbid[].bid[].price`   | Bid price in CPM (USD)     |
| `seatbid[].bid[].adm`     | Ad markup (HTML)           |
| `seatbid[].bid[].adomain` | Advertiser domain(s)       |
| `seatbid[].bid[].w`       | Creative width             |
| `seatbid[].bid[].h`       | Creative height            |
| `seatbid[].bid[].nurl`    | Win notification URL       |
| `seatbid[].bid[].lurl`    | Loss notification URL      |

### Example Bid Response

```json
{
  "id": "req-12345",
  "seatbid": [{
    "seat": "panxo",
    "bid": [{
      "id": "bid-abc123",
      "impid": "imp-1",
      "price": 2.50,
      "adm": "<div><!-- ad markup --></div>",
      "adomain": ["advertiser.com"],
      "w": 300,
      "h": 250,
      "nurl": "https://panxo-sys.com/win?b=bid-abc123&p=${AUCTION_PRICE}",
      "lurl": "https://panxo-sys.com/loss?b=bid-abc123&r=${AUCTION_LOSS}"
    }]
  }],
  "cur": "USD"
}
```

***

## 6. Notification URLs

### Win Notification

Called when Panxo's bid wins the auction.

| Field      | Value                               |
| ---------- | ----------------------------------- |
| **URL**    | Provided in `bid.nurl`              |
| **Method** | GET                                 |
| **Macros** | `${AUCTION_PRICE}` - clearing price |

### Loss Notification

Called when Panxo's bid loses.

| Field      | Value                                |
| ---------- | ------------------------------------ |
| **URL**    | Provided in `bid.lurl`               |
| **Method** | GET                                  |
| **Macros** | `${AUCTION_LOSS}` - loss reason code |

### Impression Tracking

Embedded in ad markup. Fires when ad is rendered.

### Click Tracking

Embedded in ad markup. Redirects through Panxo tracking before landing page.

***

## 7. Technical Requirements

### Latency

| Metric                    | Value                 |
| ------------------------- | --------------------- |
| **Target Response Time**  | < 100ms               |
| **Maximum Response Time** | Respects `tmax` field |
| **Default Timeout**       | 500ms                 |

### Infrastructure

| Aspect           | Details                          |
| ---------------- | -------------------------------- |
| **Hosting**      | Cloudflare Workers (global edge) |
| **Availability** | 99.9% uptime SLA                 |
| **TLS**          | TLS 1.2+ required                |
| **Compression**  | gzip supported                   |

### Rate Limits

No rate limits. Infrastructure scales automatically.

***

## 8. Supported Features

| Feature                   | Support |
| ------------------------- | ------- |
| Banner Display            | Yes     |
| Video                     | Planned |
| Native                    | Planned |
| Private Marketplace (PMP) | No      |
| First-Price Auction       | Yes     |
| Second-Price Auction      | Yes     |
| GDPR (TCF 2.0)            | Yes     |
| CCPA (US Privacy)         | Yes     |
| GPP                       | Yes     |

***

## 9. Privacy & Compliance

### Data Usage

* User IDs are used solely for frequency capping and ad targeting
* No personal data is stored beyond session
* Full GDPR and CCPA compliance

### Blocked Content

Panxo does not serve ads for:

* Adult content
* Illegal products
* Malware or deceptive content
* Weapons or ammunition

### Creative Policies

* All creatives are pre-approved
* No auto-play audio
* No pop-ups or pop-unders
* No malicious redirects

***

## 10. Testing

### Test Mode

Send `test: 1` in bid request to enable test mode. Test bids will not be charged.

### Health Check

```
GET https://panxo-sys.com/health
```

Response:

```json
{
  "status": "healthy",
  "service": "panxo-ortb",
  "timestamp": "2026-01-17T12:00:00Z"
}
```

### Sample Test Request

```bash
curl -X POST "https://panxo-sys.com/openrtb/2.5/bid?key=test123" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "test-request-1",
    "test": 1,
    "imp": [{
      "id": "imp-1",
      "banner": {"w": 300, "h": 250}
    }],
    "site": {"domain": "test.example.com"},
    "user": {"buyeruid": "test-user-123"},
    "tmax": 500
  }'
```

***

## 11. Contact

| Type                     | Contact           |
| ------------------------ | ----------------- |
| **Technical Support**    | <tech@panxo.ai>   |
| **Business Development** | <sales@panxo.ai>  |
| **Emergency**            | <oncall@panxo.ai> |

***

## Appendix A: SSP-Specific Configuration

### For Xandr

{% stepper %}
{% step %}
Go to **Demand Partners** > **Add External Bidder**
{% endstep %}

{% step %}
Enter:

* Bidder Name: `Panxo`
* Bid URI: `https://panxo-sys.com/openrtb/2.5/bid?key={YOUR_KEY}`
* User Sync URL: `https://panxo-sys.com/usersync?redir={REDIRECT_URL_ENC}`
  {% endstep %}

{% step %}
Enable `buyeruid` passthrough
{% endstep %}
{% endstepper %}

### For Magnite

{% stepper %}
{% step %}
Go to **Partners** > **Add Demand Partner**
{% endstep %}

{% step %}
Enter:

* Partner Name: `Panxo`
* Endpoint: `https://panxo-sys.com/openrtb/2.5/bid?key={YOUR_KEY}`
* Cookie Sync: `https://panxo-sys.com/usersync?redir={redirectUrl}`
  {% endstep %}

{% step %}
Supported formats: Banner
{% endstep %}
{% endstepper %}

### For PubMatic

Contact Panxo for PubMatic-specific integration instructions.

### For Google Ad Manager (Open Bidding)

Panxo is available as an Open Bidding partner. Contact Google for enablement.

***

## Appendix B: Troubleshooting

<details>

<summary>No bids received</summary>

Verify user.buyeruid is being sent (requires cookie sync)Check that site.domain matches the registered propertyVerify the key parameter is correctEnsure requested sizes are supported

</details>

<details>

<summary>204 responses</summary>

Normal behavior when:

* User is not synced (`user.buyeruid` missing)
* No campaigns match the inventory
* Floor price is too high
* No AI signal detected for user

</details>

<details>

<summary>Cookie sync not working</summary>

Verify redirect URL is properly encodedCheck that SSP is calling the sync URL on page loadEnsure third-party cookies are not blocked

</details>

***

*Document Version: 1.0*\
*Last Updated: January 2026*
