# 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*\
\&#xNAN;*Last Updated: January 2026*


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.panxo.ai/integrations/ssp-managed-accounts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
