{"openapi":"3.0.3","info":{"title":"ClickGo API Documentation","description":"Public REST API for managing campaigns, creatives, advertisers and reporting data on the network. All endpoints are versioned under `\/api\/v1`.\n\n## Authentication\n\nAll requests must include an API key. Send it on every request using **either** of the following headers:\n\n```\nAuthorization: Bearer mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n```\nX-API-KEY: mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n## How to get an API key\n\n1. Open your ClickGo dashboard in a browser.\n2. Click **Settings** in the menu, then click **Network Settings**.\n3. Go to the **API Keys** tab.\n4. Click **Generate API Key** (or **Reveal API Key** if one already exists) and copy your Current Key.\n\n## Rate Limiting\n\nAll API requests are subject to per-second rate limits based on the role of the API key.\nOnce the limit is reached, the API returns **429 Too Many Requests** with the following body:\n\n```json\n{\n  \"code\": \"rate_limited\",\n  \"message\": \"Too many requests. Please slow down.\"\n}\n```\n\n### Request quotas\n\n| User | Limit |\n|-----------|----------------|\n| Network (Admin) | 60 requests\/second |\n| Publisher | 10 requests\/second |\n| Advertiser | 10 requests\/second |\n\n### Response headers\n\nEvery response includes headers indicating your current quota:\n\n| Header | Description |\n|--------|-------------|\n| `X-RateLimit-Limit` | Maximum requests allowed in the current window |\n| `X-RateLimit-Remaining` | Requests remaining in the current window |\n\nWhen rate-limited (429), two additional headers are included:\n\n| Header | Description |\n|--------|-------------|\n| `Retry-After` | Seconds to wait before retrying |\n| `X-RateLimit-Reset` | Unix timestamp (seconds) when the window resets |\n\n## Downloads\n\n- \ud83d\udce5 **Postman Collection** \u2014 [\/docs.postman](.\/docs.postman)\n- \ud83d\udcc4 **OpenAPI 3.0 Spec** \u2014 [\/docs.openapi](.\/docs.openapi)","version":"1.0.2"},"servers":[{"url":"https:\/\/api.stage.clickgotrack.com"}],"tags":[{"name":"Account","description":""},{"name":"Publishers","description":""},{"name":"Campaigns","description":""},{"name":"Advertisers","description":""},{"name":"Creatives","description":""},{"name":"Managers","description":""},{"name":"Tracking Links","description":""},{"name":"Tracking Domains","description":""},{"name":"Reference Data","description":""},{"name":"Reporting","description":""},{"name":"Publisher Campaigns","description":""},{"name":"Publisher Tracking Links","description":""},{"name":"Publisher Tracking Domains","description":""},{"name":"Publisher Reporting","description":""},{"name":"Advertiser Campaigns","description":""}],"components":{"securitySchemes":{"default":{"type":"http","scheme":"bearer","description":"Generate your API key from <b>Network Settings \u2192 API Keys<\/b> in the admin dashboard. Send it as <code>Authorization: Bearer mk_...<\/code> (or via the <code>X-API-KEY<\/code> header)."}}},"security":[{"default":[]}],"x-tagGroups":[{"name":"Account","tags":["Account"]},{"name":"Admin APIs","tags":["Publishers","Campaigns","Advertisers","Creatives","Managers","Tracking Links","Tracking Domains","Reference Data","Reporting"]},{"name":"Publisher APIs","tags":["Publisher Campaigns","Publisher Tracking Links","Publisher Tracking Domains","Publisher Reporting"]},{"name":"Advertiser APIs","tags":["Advertiser Campaigns"]}],"paths":{"\/api\/v1\/account\/info":{"get":{"summary":"Get account info","operationId":"getAccountInfo","description":"Returns details about the authenticated account: the user the API key\nbelongs to (name, email and role) and the network it operates on.\n\nUse this as the first call when integrating \u2014 a successful 200 confirms\nconnectivity, host resolution, API key validity and role assignment in a\nsingle round-trip.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"first_name":"Jane","last_name":"Doe","email":"jane@acme.com","role":"advertiser","network":{"name":"Acme Network","primary_domain":"acme.example.com"}}},"properties":{"data":{"type":"object","properties":{"first_name":{"type":"string","example":"Jane"},"last_name":{"type":"string","example":"Doe"},"email":{"type":"string","example":"jane@acme.com"},"role":{"type":"string","example":"advertiser"},"network":{"type":"object","properties":{"name":{"type":"string","example":"Acme Network"},"primary_domain":{"type":"string","example":"acme.example.com"}}}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}}},"tags":["Account"]}},"\/api\/v1\/admin\/publishers":{"get":{"summary":"List Publishers","operationId":"listPublishers","description":"Returns a paginated list of publishers (affiliates) in your network.\nFilters are flat query parameters.","parameters":[{"in":"query","name":"name","description":"Partial match on first or last name (case-insensitive).","example":"jane","required":false,"schema":{"type":"string","description":"Partial match on first or last name (case-insensitive).","example":"jane"}},{"in":"query","name":"email","description":"Partial match on email address (case-insensitive).","example":"@acme.com","required":false,"schema":{"type":"string","description":"Partial match on email address (case-insensitive).","example":"@acme.com"}},{"in":"query","name":"status","description":"Comma-separated list of statuses. Allowed: `APPROVED`, `DENIED`, `TERMINATED`, `PENDING`.","example":"APPROVED,PENDING","required":false,"schema":{"type":"string","description":"Comma-separated list of statuses. Allowed: `APPROVED`, `DENIED`, `TERMINATED`, `PENDING`.","example":"APPROVED,PENDING"}},{"in":"query","name":"created_after","description":"Return only publishers created on or after this ISO date.","example":"2026-01-01","required":false,"schema":{"type":"string","description":"Return only publishers created on or after this ISO date.","example":"2026-01-01"}},{"in":"query","name":"created_before","description":"Return only publishers created on or before this ISO date.","example":"2026-12-31","required":false,"schema":{"type":"string","description":"Return only publishers created on or before this ISO date.","example":"2026-12-31"}},{"in":"query","name":"sort","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `email`, `first_name`, `last_name`, `status`, `created_at`.","example":"-created_at","required":false,"schema":{"type":"string","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `email`, `first_name`, `last_name`, `status`, `created_at`.","example":"-created_at"}},{"in":"query","name":"per_page","description":"Items per page. Defaults to 10. Max 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page. Defaults to 10. Max 100.","example":25}},{"in":"query","name":"page","description":"Page number.","example":1,"required":false,"schema":{"type":"integer","description":"Page number.","example":1}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":12,"first_name":"Jane","last_name":"Doe","email":"jane@example.com","status":"approved","manager_id":null,"payment_schedule":"MONTHLY_NET30","created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":10,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":12,"first_name":"Jane","last_name":"Doe","email":"jane@example.com","status":"approved","manager_id":null,"payment_schedule":"MONTHLY_NET30","created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}],"items":{"type":"object","properties":{"id":{"type":"integer","example":12},"first_name":{"type":"string","example":"Jane"},"last_name":{"type":"string","example":"Doe"},"email":{"type":"string","example":"jane@example.com"},"status":{"type":"string","example":"approved"},"manager_id":{"type":"string","example":null,"nullable":true},"payment_schedule":{"type":"string","example":"MONTHLY_NET30"},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":10},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Publishers"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Must not be greater than 255 characters.","example":"b","nullable":true},"email":{"type":"string","description":"Must not be greater than 255 characters.","example":"zbailey@example.net","nullable":true},"status":{"type":"string","description":"","example":"architecto","nullable":true},"created_after":{"type":"string","description":"Must be a valid date.","example":"2026-07-02T22:57:28","nullable":true},"created_before":{"type":"string","description":"Must be a valid date. Must be a date after or equal to <code>created_after<\/code>.","example":"2052-07-25","nullable":true},"sort":{"type":"string","description":"","example":"-first_name","enum":["id","-id","email","-email","first_name","-first_name","last_name","-last_name","status","-status","created_at","-created_at"],"nullable":true},"per_page":{"type":"integer","description":"Must be at least 1. Must not be greater than 100.","example":22,"nullable":true}}}}}}},"post":{"summary":"Create Publisher","operationId":"createPublisher","description":"Creates a new publisher (affiliate) in your network. The new publisher\nis assigned the default `publisher` role for your network. A random\npassword is generated; publishers cannot log in until you reset their\npassword from the dashboard.","parameters":[],"responses":{"201":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":12,"first_name":"Jane","last_name":"Doe","email":"jane@example.com","status":"approved","manager_id":null,"payment_schedule":"MONTHLY_NET30","created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":12},"first_name":{"type":"string","example":"Jane"},"last_name":{"type":"string","example":"Doe"},"email":{"type":"string","example":"jane@example.com"},"status":{"type":"string","example":"approved"},"manager_id":{"type":"string","example":null,"nullable":true},"payment_schedule":{"type":"string","example":"MONTHLY_NET30"},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T12:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"422":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"validation_failed","message":"The given data was invalid.","errors":{"email":["A user with this email already exists."]}},"properties":{"code":{"type":"string","example":"validation_failed"},"message":{"type":"string","example":"The given data was invalid."},"errors":{"type":"object","properties":{"email":{"type":"array","example":["A user with this email already exists."],"items":{"type":"string"}}}}}}}}}},"tags":["Publishers"],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"first_name":{"type":"string","description":"Publisher first name. Must not be greater than 255 characters.","example":"Jane"},"last_name":{"type":"string","description":"Publisher last name. Must not be greater than 255 characters.","example":"Doe"},"email":{"type":"string","description":"Publisher email address (must be unique in your network). Must be a valid email address. Must not be greater than 255 characters.","example":"jane@example.com"},"status":{"type":"string","description":"Initial status. Allowed: `APPROVED`, `PENDING`. Defaults to `APPROVED`.","example":"APPROVED","enum":["APPROVED","PENDING"]},"manager_id":{"type":"integer","description":"Optional ID of a publisher manager to assign. Use the Managers endpoint to retrieve valid IDs. Must match an existing stored value.","example":null,"nullable":true},"payment_schedule":{"type":"string","description":"Optional payment schedule. Allowed: `MONTHLY_NET15`, `MONTHLY_NET30`, `WEEKLY_NET1`, `WEEKLY_NET2`, `WEEKLY_NET3`, `WEEKLY_NET4`, `WEEKLY_NET5`, `TWICE_WEEKLY`.","example":"MONTHLY_NET30","enum":["MONTHLY_NET15","MONTHLY_NET30","WEEKLY_NET1","WEEKLY_NET2","WEEKLY_NET3","WEEKLY_NET4","WEEKLY_NET5","TWICE_WEEKLY"],"nullable":true}},"required":["first_name","last_name","email"]}}}}}},"\/api\/v1\/admin\/publishers\/{id}":{"get":{"summary":"Get Publisher","operationId":"getPublisher","description":"Returns a single publisher by its ID.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":12,"first_name":"Jane","last_name":"Doe","email":"jane@example.com","status":"approved","manager_id":null,"payment_schedule":"MONTHLY_NET30","created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":12},"first_name":{"type":"string","example":"Jane"},"last_name":{"type":"string","example":"Doe"},"email":{"type":"string","example":"jane@example.com"},"status":{"type":"string","example":"approved"},"manager_id":{"type":"string","example":null,"nullable":true},"payment_schedule":{"type":"string","example":"MONTHLY_NET30"},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T12:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"404":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"not_found","message":"The requested resource was not found."},"properties":{"code":{"type":"string","example":"not_found"},"message":{"type":"string","example":"The requested resource was not found."}}}}}}},"tags":["Publishers"]},"put":{"summary":"Update Publisher","operationId":"updatePublisher","description":"Partially updates a publisher by its ID. Only the\nfields you include in the body are updated. Manager assignment replaces\n(not appends to) any existing manager.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":12,"first_name":"Jane","last_name":"Doe","email":"jane@example.com","status":"approved","manager_id":null,"payment_schedule":"WEEKLY_NET2","created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T13:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":12},"first_name":{"type":"string","example":"Jane"},"last_name":{"type":"string","example":"Doe"},"email":{"type":"string","example":"jane@example.com"},"status":{"type":"string","example":"approved"},"manager_id":{"type":"string","example":null,"nullable":true},"payment_schedule":{"type":"string","example":"WEEKLY_NET2"},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T13:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"404":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"not_found","message":"The requested resource was not found."},"properties":{"code":{"type":"string","example":"not_found"},"message":{"type":"string","example":"The requested resource was not found."}}}}}},"422":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"validation_failed","message":"The given data was invalid.","errors":{"email":["The email field must be a valid email address."]}},"properties":{"code":{"type":"string","example":"validation_failed"},"message":{"type":"string","example":"The given data was invalid."},"errors":{"type":"object","properties":{"email":{"type":"array","example":["The email field must be a valid email address."],"items":{"type":"string"}}}}}}}}}},"tags":["Publishers"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"first_name":{"type":"string","description":"Publisher first name. Must not be greater than 255 characters.","example":"Jane"},"last_name":{"type":"string","description":"Publisher last name. Must not be greater than 255 characters.","example":"Doe"},"email":{"type":"string","description":"Publisher email address (must be unique in your network). Must be a valid email address. Must not be greater than 255 characters.","example":"jane@example.com"},"status":{"type":"string","description":"Publisher status. Allowed: `APPROVED`, `DENIED`, `PENDING`, `TERMINATED`.","example":"APPROVED","enum":["approved","denied","terminated","pending"]},"manager_id":{"type":"integer","description":"ID of a publisher manager to assign, or `null` to remove the current manager. Use the Managers endpoint to retrieve valid IDs. Must match an existing stored value.","example":null,"nullable":true},"payment_schedule":{"type":"string","description":"Payment schedule. Allowed: `MONTHLY_NET15`, `MONTHLY_NET30`, `WEEKLY_NET1`, `WEEKLY_NET2`, `WEEKLY_NET3`, `WEEKLY_NET4`, `WEEKLY_NET5`, `TWICE_WEEKLY`.","example":"MONTHLY_NET30","enum":["MONTHLY_NET15","MONTHLY_NET30","WEEKLY_NET1","WEEKLY_NET2","WEEKLY_NET3","WEEKLY_NET4","WEEKLY_NET5","TWICE_WEEKLY"],"nullable":true}}}}}}},"parameters":[{"in":"path","name":"id","description":"The ID of the publisher.","example":12,"required":true,"schema":{"type":"integer"}}]},"\/api\/v1\/admin\/campaigns":{"get":{"summary":"List Campaigns","operationId":"listCampaigns","description":"Returns a paginated list of campaigns in your network. Filters are flat\nquery parameters; multiple values can be passed as a comma-separated list\n(e.g. `status=ACTIVE,EXPIRING`).","parameters":[{"in":"query","name":"name","description":"Partial match on campaign name (case-insensitive).","example":"spring","required":false,"schema":{"type":"string","description":"Partial match on campaign name (case-insensitive).","example":"spring"}},{"in":"query","name":"status","description":"Comma-separated list of statuses. Allowed: `ACTIVE`, `EXPIRING`, `EXPIRED`.","example":"ACTIVE","required":false,"schema":{"type":"string","description":"Comma-separated list of statuses. Allowed: `ACTIVE`, `EXPIRING`, `EXPIRED`.","example":"ACTIVE"}},{"in":"query","name":"offer_type","description":"Comma-separated list of offer types. Allowed: `public`, `private`, `approval`.","example":"public","required":false,"schema":{"type":"string","description":"Comma-separated list of offer types. Allowed: `public`, `private`, `approval`.","example":"public"}},{"in":"query","name":"advertiser_id","description":"Filter by parent advertiser ID.","example":7,"required":false,"schema":{"type":"integer","description":"Filter by parent advertiser ID.","example":7}},{"in":"query","name":"created_after","description":"Return only campaigns created on or after this ISO date.","example":"2026-01-01","required":false,"schema":{"type":"string","description":"Return only campaigns created on or after this ISO date.","example":"2026-01-01"}},{"in":"query","name":"created_before","description":"Return only campaigns created on or before this ISO date.","example":"2026-12-31","required":false,"schema":{"type":"string","description":"Return only campaigns created on or before this ISO date.","example":"2026-12-31"}},{"in":"query","name":"sort","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `name`, `status`, `cpa`, `created_at`.","example":"-created_at","required":false,"schema":{"type":"string","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `name`, `status`, `cpa`, `created_at`.","example":"-created_at"}},{"in":"query","name":"per_page","description":"Items per page. Defaults to 10. Max 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page. Defaults to 10. Max 100.","example":25}},{"in":"query","name":"page","description":"Page number.","example":1,"required":false,"schema":{"type":"integer","description":"Page number.","example":1}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":101,"name":"Spring Campaign","advertiser_id":7,"offer_type":"public","status":"ACTIVE","payout":18,"created_at":"2026-04-20T12:00:00Z"}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":10,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":101,"name":"Spring Campaign","advertiser_id":7,"offer_type":"public","status":"ACTIVE","payout":18,"created_at":"2026-04-20T12:00:00Z"}],"items":{"type":"object","properties":{"id":{"type":"integer","example":101},"name":{"type":"string","example":"Spring Campaign"},"advertiser_id":{"type":"integer","example":7},"offer_type":{"type":"string","example":"public"},"status":{"type":"string","example":"ACTIVE"},"payout":{"type":"number","example":18},"created_at":{"type":"string","example":"2026-04-20T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":10},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Campaigns"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Must not be greater than 255 characters.","example":"b","nullable":true},"status":{"type":"string","description":"Must not be greater than 255 characters.","example":"n","nullable":true},"offer_type":{"type":"string","description":"Must not be greater than 100 characters.","example":"g","nullable":true},"advertiser_id":{"type":"integer","description":"","example":16,"nullable":true},"created_after":{"type":"string","description":"Must be a valid date.","example":"2026-07-02T22:57:28","nullable":true},"created_before":{"type":"string","description":"Must be a valid date. Must be a date after or equal to <code>created_after<\/code>.","example":"2052-07-25","nullable":true},"sort":{"type":"string","description":"","example":"name","enum":["id","-id","name","-name","status","-status","cpa","-cpa","created_at","-created_at"],"nullable":true},"per_page":{"type":"integer","description":"Must be at least 1. Must not be greater than 100.","example":22,"nullable":true}}}}}}},"post":{"summary":"Create Campaign","operationId":"createCampaign","description":"Creates a new campaign in your network. All foreign-key fields\n(`advertiser_id`, `category_id`, redirect campaign \/ creative IDs) accept\ntenant-local IDs validated against your account.\n\n**Geo targeting** \u2014 pass `countries` as an array of ISO 3166-1 alpha-2\ncodes (e.g. `[\"US\",\"CA\"]`). Omit the field or pass `null` to target\n**all countries**. Use `GET \/admin\/countries` for the full supported list.\n\n**Device & OS targeting** \u2014 pass `device` (`\"mobile\"`, `\"desktop\"`, `\"all\"`)\nand\/or `os` (array of `\"ios\"`, `\"android\"`, `\"windows\"`, `\"mac\"`, `\"linux\"`).\nOmit or pass `null` on either field to allow all devices \/ OS.","parameters":[],"responses":{"201":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":101,"name":"Spring Promo 2026","advertiser_id":7,"offer_type":"public","status":"ACTIVE","cpa":12.5,"payout":18,"is_rev_share":false,"is_incentive":false,"countries":["US","CA"],"geo_redirect_campaign_id":null,"geo_redirect_creative_id":null,"expired_redirect_campaign_id":null,"expired_redirect_creative_id":null,"campaign_cap_redirect_campaign_id":null,"campaign_cap_redirect_creative_id":null,"advertiser_cap_redirect_campaign_id":null,"advertiser_cap_redirect_creative_id":null,"device_redirect_campaign_id":null,"device_redirect_creative_id":null,"os_redirect_campaign_id":null,"os_redirect_creative_id":null,"created_at":"2026-04-30T12:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":101},"name":{"type":"string","example":"Spring Promo 2026"},"advertiser_id":{"type":"integer","example":7},"offer_type":{"type":"string","example":"public"},"status":{"type":"string","example":"ACTIVE"},"cpa":{"type":"number","example":12.5},"payout":{"type":"number","example":18},"is_rev_share":{"type":"boolean","example":false},"is_incentive":{"type":"boolean","example":false},"countries":{"type":"array","example":["US","CA"],"items":{"type":"string"}},"geo_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"geo_redirect_creative_id":{"type":"string","example":null,"nullable":true},"expired_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"expired_redirect_creative_id":{"type":"string","example":null,"nullable":true},"campaign_cap_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"campaign_cap_redirect_creative_id":{"type":"string","example":null,"nullable":true},"advertiser_cap_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"advertiser_cap_redirect_creative_id":{"type":"string","example":null,"nullable":true},"device_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"device_redirect_creative_id":{"type":"string","example":null,"nullable":true},"os_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"os_redirect_creative_id":{"type":"string","example":null,"nullable":true},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"422":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"message":"The given data was invalid.","errors":{"name":["The name has already been taken."]}},"properties":{"message":{"type":"string","example":"The given data was invalid."},"errors":{"type":"object","properties":{"name":{"type":"array","example":["The name has already been taken."],"items":{"type":"string"}}}}}}}}}},"tags":["Campaigns"],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Campaign name. Must not be greater than 255 characters.","example":"Spring Promo 2026"},"advertiser_id":{"type":"integer","description":"Advertiser ID.","example":7},"offer_type":{"type":"string","description":"Offer visibility. Allowed: `public`, `private`, `approval`.","example":"public","enum":["public","private","approval"]},"status":{"type":"string","description":"Initial campaign status. Allowed: `ACTIVE`, `EXPIRING`, `EXPIRED`. Defaults to `ACTIVE` when omitted.","example":"ACTIVE","enum":["ACTIVE","EXPIRING","EXPIRED"],"nullable":true},"description":{"type":"string","description":"Optional campaign description.","example":null,"nullable":true},"category_id":{"type":"integer","description":"Optional category ID.","example":3,"nullable":true},"is_incentive":{"type":"boolean","description":"Whether this is an incentive campaign.","example":false},"url":{"type":"string","description":"Destination \/ preview URL. Must not be greater than 2048 characters.","example":"https:\/\/advertiser.example.com\/landing","nullable":true},"comment":{"type":"string","description":"","example":"architecto","nullable":true},"terms":{"type":"string","description":"Optional campaign terms shown to publishers.","example":null,"nullable":true},"converts_on":{"type":"string","description":"Free-text label describing the conversion event (e.g. \"Purchase\", \"Registration\").","example":"Purchase","nullable":true},"converts_on_other":{"type":"string","description":"","example":"architecto","nullable":true},"transaction_type":{"type":"string","description":"","example":"cpc","enum":["cpa","revshare","cpc"]},"cpa":{"type":"number","description":"Amount paid to publishers per conversion. Must be at least 0.","example":12.5},"is_rev_share":{"type":"boolean","description":"Use revenue share model instead of fixed CPA.","example":false},"is_cpc":{"type":"boolean","description":"","example":false},"cpa_rs":{"type":"number","description":"Revenue share percentage (required when `is_rev_share` is true). Must be at least 0.","example":null},"payout":{"type":"number","description":"Amount the advertiser pays per conversion. Must be at least 0.","example":18},"is_hard_cap_active":{"type":"boolean","description":"Whether the campaign has a hard cap end date.","example":false},"hard_cap_date":{"type":"string","description":"Required when `is_hard_cap_active` is true. Must be a valid date.","example":null},"is_cap_active":{"type":"boolean","description":"Whether a per-window conversion cap is enforced.","example":false},"cap_limit":{"type":"integer","description":"Conversion cap limit (required when `is_cap_active` is true). Must be at least 0.","example":null},"cap_limit_frequency":{"type":"integer","description":"Cap window frequency in days (required when `is_cap_active` is true). Must be at least 0.","example":null},"expiration_date":{"type":"string","description":"Optional campaign expiration date (ISO 8601). Must be a valid date.","example":"2026-12-31","nullable":true},"device":{"type":"string","description":"Restrict traffic by device type. Allowed: `all`, `desktop`, `mobile`. Omit or pass `null` to allow all devices.","example":"mobile","enum":["all","desktop","mobile"],"nullable":true},"os":{"type":"array","description":"","example":["linux"],"items":{"type":"string","enum":["all","windows","mac","linux","android","ios"]}},"block_proxies":{"type":"boolean","description":"Block proxy\/VPN traffic.","example":false,"nullable":true},"proxy_tolerance":{"type":"string","description":"Proxy detection sensitivity. Allowed: `standard`, `strict`, `relaxed`.","example":"standard","enum":["standard","strict","relaxed"],"nullable":true},"enable_container":{"type":"boolean","description":"Enable container\/pixel tracking on the landing page.","example":false,"nullable":true},"countries":{"type":"array","description":"ISO 3166-1 alpha-2 country code. Must match an existing stored value. Must be 2 characters.","example":["US"],"items":{"type":"string"}},"geo_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect users to when they fail the country filter.","example":null,"nullable":true},"geo_redirect_creative_id":{"type":"integer","description":"Optional creative ID to use when redirecting on geo mismatch. Requires `geo_redirect_campaign_id`.","example":null,"nullable":true},"expired_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect to when this campaign is expired.","example":null,"nullable":true},"expired_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the expired redirect.","example":null,"nullable":true},"campaign_cap_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect to when this campaign's cap is reached.","example":null,"nullable":true},"campaign_cap_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the campaign-cap redirect.","example":null,"nullable":true},"advertiser_cap_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect to when the advertiser-level cap is reached.","example":null,"nullable":true},"advertiser_cap_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the advertiser-cap redirect.","example":null,"nullable":true},"device_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect to when the visitor's device is not supported.","example":null,"nullable":true},"device_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the device redirect.","example":null,"nullable":true},"os_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect to when the visitor's OS is not supported.","example":null,"nullable":true},"os_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the OS redirect.","example":null,"nullable":true}},"required":["name","advertiser_id","offer_type","is_incentive","cpa","is_rev_share","cpa_rs","payout","is_hard_cap_active","hard_cap_date","is_cap_active","cap_limit","cap_limit_frequency"]}}}}}},"\/api\/v1\/admin\/campaigns\/{id}":{"get":{"summary":"Get Campaign","operationId":"getCampaign","description":"Returns the full detail of a single campaign by its ID.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":42,"name":"Spring Promo 2026","advertiser_id":7,"category_id":3,"offer_type":"public","status":"ACTIVE","description":null,"url":"https:\/\/...","is_incentive":false,"is_rev_share":false,"cpa":12.5,"cpa_rs":null,"payout":18,"is_cap_active":false,"cap_limit":null,"cap_limit_frequency":null,"is_hard_cap_active":false,"hard_cap_date":null,"expiration_date":null,"device":null,"os":null,"block_proxies":false,"proxy_tolerance":"standard","enable_container":false,"terms":null,"comment":null,"converts_on":null,"converts_on_other":null,"countries":["US","CA"],"geo_redirect_campaign_id":null,"geo_redirect_creative_id":null,"expired_redirect_campaign_id":null,"expired_redirect_creative_id":null,"campaign_cap_redirect_campaign_id":null,"campaign_cap_redirect_creative_id":null,"advertiser_cap_redirect_campaign_id":null,"advertiser_cap_redirect_creative_id":null,"device_redirect_campaign_id":null,"device_redirect_creative_id":null,"os_redirect_campaign_id":null,"os_redirect_creative_id":null,"created_at":"2026-04-20T12:00:00Z","updated_at":"2026-04-20T12:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":42},"name":{"type":"string","example":"Spring Promo 2026"},"advertiser_id":{"type":"integer","example":7},"category_id":{"type":"integer","example":3},"offer_type":{"type":"string","example":"public"},"status":{"type":"string","example":"ACTIVE"},"description":{"type":"string","example":null,"nullable":true},"url":{"type":"string","example":"https:\/\/..."},"is_incentive":{"type":"boolean","example":false},"is_rev_share":{"type":"boolean","example":false},"cpa":{"type":"number","example":12.5},"cpa_rs":{"type":"string","example":null,"nullable":true},"payout":{"type":"number","example":18},"is_cap_active":{"type":"boolean","example":false},"cap_limit":{"type":"string","example":null,"nullable":true},"cap_limit_frequency":{"type":"string","example":null,"nullable":true},"is_hard_cap_active":{"type":"boolean","example":false},"hard_cap_date":{"type":"string","example":null,"nullable":true},"expiration_date":{"type":"string","example":null,"nullable":true},"device":{"type":"string","example":null,"nullable":true},"os":{"type":"string","example":null,"nullable":true},"block_proxies":{"type":"boolean","example":false},"proxy_tolerance":{"type":"string","example":"standard"},"enable_container":{"type":"boolean","example":false},"terms":{"type":"string","example":null,"nullable":true},"comment":{"type":"string","example":null,"nullable":true},"converts_on":{"type":"string","example":null,"nullable":true},"converts_on_other":{"type":"string","example":null,"nullable":true},"countries":{"type":"array","example":["US","CA"],"items":{"type":"string"}},"geo_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"geo_redirect_creative_id":{"type":"string","example":null,"nullable":true},"expired_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"expired_redirect_creative_id":{"type":"string","example":null,"nullable":true},"campaign_cap_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"campaign_cap_redirect_creative_id":{"type":"string","example":null,"nullable":true},"advertiser_cap_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"advertiser_cap_redirect_creative_id":{"type":"string","example":null,"nullable":true},"device_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"device_redirect_creative_id":{"type":"string","example":null,"nullable":true},"os_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"os_redirect_creative_id":{"type":"string","example":null,"nullable":true},"created_at":{"type":"string","example":"2026-04-20T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-20T12:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"404":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"not_found","message":"Campaign not found."},"properties":{"code":{"type":"string","example":"not_found"},"message":{"type":"string","example":"Campaign not found."}}}}}}},"tags":["Campaigns"]},"put":{"summary":"Update Campaign","operationId":"updateCampaign","description":"Partially updates a campaign by its ID. Only the fields you include\nin the body are updated (PATCH semantics).\\n     *\\n     * **Geo targeting** \u2014 pass `countries` as an array of ISO 3166-1 alpha-2\\n     * codes. Omit the field to leave geo targeting unchanged; pass `null` to\\n     * clear it and target **all countries**.\\n     *\\n     * **Device & OS targeting** \u2014 pass `device` (`\\\"mobile\\\"`, `\\\"desktop\\\"`,\\n     * `\\\"all\\\"`) and\/or `os` (array of `\\\"ios\\\"`, `\\\"android\\\"`, `\\\"windows\\\"`,\\n     * `\\\"mac\\\"`, `\\\"linux\\\"`). Pass `null` to clear the restriction.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":42,"name":"Spring Promo 2026 (updated)","advertiser_id":7,"offer_type":"public","status":"ACTIVE","cpa":13,"payout":18.5,"countries":["US","CA"],"geo_redirect_campaign_id":null,"geo_redirect_creative_id":null,"expired_redirect_campaign_id":null,"expired_redirect_creative_id":null}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":42},"name":{"type":"string","example":"Spring Promo 2026 (updated)"},"advertiser_id":{"type":"integer","example":7},"offer_type":{"type":"string","example":"public"},"status":{"type":"string","example":"ACTIVE"},"cpa":{"type":"number","example":13},"payout":{"type":"number","example":18.5},"countries":{"type":"array","example":["US","CA"],"items":{"type":"string"}},"geo_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"geo_redirect_creative_id":{"type":"string","example":null,"nullable":true},"expired_redirect_campaign_id":{"type":"string","example":null,"nullable":true},"expired_redirect_creative_id":{"type":"string","example":null,"nullable":true}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"404":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"not_found","message":"Campaign not found."},"properties":{"code":{"type":"string","example":"not_found"},"message":{"type":"string","example":"Campaign not found."}}}}}},"422":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"message":"The given data was invalid.","errors":{"cpa":["The cpa must be at least 0."]}},"properties":{"message":{"type":"string","example":"The given data was invalid."},"errors":{"type":"object","properties":{"cpa":{"type":"array","example":["The cpa must be at least 0."],"items":{"type":"string"}}}}}}}}}},"tags":["Campaigns"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Campaign name. Must not be greater than 255 characters.","example":"Spring Promo 2026 (updated)"},"advertiser_id":{"type":"integer","description":"Advertiser ID.","example":7},"offer_type":{"type":"string","description":"Offer visibility. Allowed: `public`, `private`, `approval`.","example":"public","enum":["public","private","approval"]},"description":{"type":"string","description":"Optional campaign description.","example":null,"nullable":true},"category_id":{"type":"integer","description":"Optional category ID.","example":3,"nullable":true},"is_incentive":{"type":"boolean","description":"Whether this is an incentive campaign.","example":false},"url":{"type":"string","description":"Destination \/ preview URL. Must not be greater than 2048 characters.","example":"https:\/\/advertiser.example.com\/landing","nullable":true},"comment":{"type":"string","description":"","example":"architecto","nullable":true},"terms":{"type":"string","description":"","example":"architecto","nullable":true},"converts_on":{"type":"string","description":"Free-text label describing the conversion event (e.g. \"Purchase\", \"Registration\").","example":"Purchase","nullable":true},"converts_on_other":{"type":"string","description":"","example":"architecto","nullable":true},"transaction_type":{"type":"string","description":"","example":"revshare","enum":["cpa","revshare","cpc"]},"cpa":{"type":"number","description":"Amount paid to publishers per conversion. Must be at least 0.","example":13},"is_rev_share":{"type":"boolean","description":"Use revenue share model instead of fixed CPA.","example":false},"is_cpc":{"type":"boolean","description":"","example":true},"cpa_rs":{"type":"number","description":"Revenue share percentage (required when `is_rev_share` is true). Must be at least 0.","example":null,"nullable":true},"payout":{"type":"number","description":"Amount the advertiser pays per conversion. Must be at least 0.","example":18.5},"is_hard_cap_active":{"type":"boolean","description":"Whether the campaign has a hard cap end date.","example":false},"hard_cap_date":{"type":"string","description":"Required when `is_hard_cap_active` is true. Must be a valid date.","example":null,"nullable":true},"is_cap_active":{"type":"boolean","description":"Whether a per-window conversion cap is enforced.","example":false},"cap_limit":{"type":"integer","description":"Conversion cap limit (required when `is_cap_active` is true). Must be at least 0.","example":null,"nullable":true},"cap_limit_frequency":{"type":"integer","description":"Cap window frequency in days. Must be at least 0.","example":null,"nullable":true},"expiration_date":{"type":"string","description":"Campaign expiration date (ISO 8601). Must be a valid date.","example":"2026-12-31","nullable":true},"status":{"type":"string","description":"Campaign status. Allowed: `ACTIVE`, `EXPIRING`, `EXPIRED`.","example":"ACTIVE","enum":["ACTIVE","EXPIRING","EXPIRED"],"nullable":true},"device":{"type":"string","description":"Restrict traffic by device type. Allowed: `all`, `desktop`, `mobile`. Omit or pass `null` to allow all devices.","example":"mobile","enum":["all","desktop","mobile"],"nullable":true},"os":{"type":"array","description":"","example":["all"],"items":{"type":"string","enum":["all","windows","mac","linux","android","ios"]}},"block_proxies":{"type":"boolean","description":"Block proxy\/VPN traffic.","example":false,"nullable":true},"proxy_tolerance":{"type":"string","description":"Proxy detection sensitivity. Allowed: `standard`, `strict`, `relaxed`.","example":"standard","enum":["standard","strict","relaxed"],"nullable":true},"enable_container":{"type":"boolean","description":"Enable container\/pixel tracking on the landing page.","example":false,"nullable":true},"countries":{"type":"array","description":"ISO 3166-1 alpha-2 country code. Must match an existing stored value. Must be 2 characters.","example":["US"],"items":{"type":"string"}},"geo_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect users to when they fail the country filter.","example":null,"nullable":true},"geo_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the geo redirect.","example":null,"nullable":true},"expired_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect to when this campaign is expired.","example":null,"nullable":true},"expired_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the expired redirect.","example":null,"nullable":true},"campaign_cap_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect to when this campaign's cap is reached.","example":null,"nullable":true},"campaign_cap_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the campaign-cap redirect.","example":null,"nullable":true},"advertiser_cap_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect to when the advertiser-level cap is reached.","example":null,"nullable":true},"advertiser_cap_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the advertiser-cap redirect.","example":null,"nullable":true},"device_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect to when the visitor's device is not supported.","example":null,"nullable":true},"device_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the device redirect.","example":null,"nullable":true},"os_redirect_campaign_id":{"type":"integer","description":"Campaign ID to redirect to when the visitor's OS is not supported.","example":null,"nullable":true},"os_redirect_creative_id":{"type":"integer","description":"Optional creative ID for the OS redirect.","example":null,"nullable":true}}}}}}},"parameters":[{"in":"path","name":"id","description":"The ID of the campaign.","example":42,"required":true,"schema":{"type":"integer"}}]},"\/api\/v1\/admin\/advertisers":{"get":{"summary":"List Advertisers","operationId":"listAdvertisers","description":"Returns a paginated list of advertisers in your network. Filters are flat\nquery parameters.","parameters":[{"in":"query","name":"name","description":"Partial match on first or last name (case-insensitive).","example":"jane","required":false,"schema":{"type":"string","description":"Partial match on first or last name (case-insensitive).","example":"jane"}},{"in":"query","name":"email","description":"Partial match on email address (case-insensitive).","example":"@acme.com","required":false,"schema":{"type":"string","description":"Partial match on email address (case-insensitive).","example":"@acme.com"}},{"in":"query","name":"status","description":"Comma-separated list of statuses. Allowed: `APPROVED`, `DENIED`, `TERMINATED`, `PENDING`.","example":"APPROVED,PENDING","required":false,"schema":{"type":"string","description":"Comma-separated list of statuses. Allowed: `APPROVED`, `DENIED`, `TERMINATED`, `PENDING`.","example":"APPROVED,PENDING"}},{"in":"query","name":"created_after","description":"Return only advertisers created on or after this ISO date.","example":"2026-01-01","required":false,"schema":{"type":"string","description":"Return only advertisers created on or after this ISO date.","example":"2026-01-01"}},{"in":"query","name":"created_before","description":"Return only advertisers created on or before this ISO date.","example":"2026-12-31","required":false,"schema":{"type":"string","description":"Return only advertisers created on or before this ISO date.","example":"2026-12-31"}},{"in":"query","name":"sort","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `email`, `first_name`, `last_name`, `created_at`.","example":"-created_at","required":false,"schema":{"type":"string","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `email`, `first_name`, `last_name`, `created_at`.","example":"-created_at"}},{"in":"query","name":"per_page","description":"Items per page. Defaults to 10. Max 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page. Defaults to 10. Max 100.","example":25}},{"in":"query","name":"page","description":"Page number.","example":1,"required":false,"schema":{"type":"integer","description":"Page number.","example":1}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":7,"company_name":"Acme Demand Co.","first_name":"Jane","last_name":"Doe","email":"jane@acme.example.com","status":"APPROVED","manager_id":null,"payment_frequency":null,"created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":10,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":7,"company_name":"Acme Demand Co.","first_name":"Jane","last_name":"Doe","email":"jane@acme.example.com","status":"APPROVED","manager_id":null,"payment_frequency":null,"created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}],"items":{"type":"object","properties":{"id":{"type":"integer","example":7},"company_name":{"type":"string","example":"Acme Demand Co."},"first_name":{"type":"string","example":"Jane"},"last_name":{"type":"string","example":"Doe"},"email":{"type":"string","example":"jane@acme.example.com"},"status":{"type":"string","example":"APPROVED"},"manager_id":{"type":"string","example":null,"nullable":true},"payment_frequency":{"type":"string","example":null,"nullable":true},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":10},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Advertisers"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Must not be greater than 255 characters.","example":"b","nullable":true},"email":{"type":"string","description":"Must not be greater than 255 characters.","example":"zbailey@example.net","nullable":true},"status":{"type":"string","description":"Must not be greater than 255 characters.","example":"i","nullable":true},"created_after":{"type":"string","description":"Must be a valid date.","example":"2026-07-02T22:57:28","nullable":true},"created_before":{"type":"string","description":"Must be a valid date. Must be a date after or equal to <code>created_after<\/code>.","example":"2052-07-25","nullable":true},"sort":{"type":"string","description":"","example":"id","enum":["id","-id","email","-email","first_name","-first_name","last_name","-last_name","created_at","-created_at"],"nullable":true},"per_page":{"type":"integer","description":"Must be at least 1. Must not be greater than 100.","example":22,"nullable":true}}}}}}},"post":{"summary":"Create Advertiser","operationId":"createAdvertiser","description":"Creates a new advertiser in your network. The new advertiser is assigned\nthe default `advertiser` role for your tenant. A random password is\ngenerated; advertisers cannot log into the dashboard until you reset\ntheir password from the UI.","parameters":[],"responses":{"201":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":7,"company_name":"Acme Demand Co.","first_name":"Jane","last_name":"Doe","email":"jane@acme.example.com","status":"approved","manager_id":null,"payment_frequency":null,"created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":7},"company_name":{"type":"string","example":"Acme Demand Co."},"first_name":{"type":"string","example":"Jane"},"last_name":{"type":"string","example":"Doe"},"email":{"type":"string","example":"jane@acme.example.com"},"status":{"type":"string","example":"approved"},"manager_id":{"type":"string","example":null,"nullable":true},"payment_frequency":{"type":"string","example":null,"nullable":true},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T12:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"422":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"message":"The given data was invalid.","errors":{"company_name":["The company name has already been taken."]}},"properties":{"message":{"type":"string","example":"The given data was invalid."},"errors":{"type":"object","properties":{"company_name":{"type":"array","example":["The company name has already been taken."],"items":{"type":"string"}}}}}}}}}},"tags":["Advertisers"],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"company_name":{"type":"string","description":"Advertiser company name (must be unique in your network). Must not be greater than 255 characters.","example":"Acme Demand Co."},"first_name":{"type":"string","description":"Optional first name of the primary contact. Defaults to \"Advertiser\". Must not be greater than 255 characters.","example":"Jane","nullable":true},"last_name":{"type":"string","description":"Optional last name of the primary contact. Defaults to \"User\". Must not be greater than 255 characters.","example":"Doe","nullable":true},"email":{"type":"string","description":"Optional contact email. A placeholder is generated if omitted. Must be a valid email address. Must not be greater than 255 characters.","example":"jane@acme.example.com","nullable":true},"manager_id":{"type":"integer","description":"Optional ID of an advertiser manager to assign. Use the Managers endpoint to retrieve valid IDs. Must match an existing stored value.","example":null,"nullable":true},"payment_frequency":{"type":"integer","description":"Optional payment frequency code (integer).","example":null,"nullable":true}},"required":["company_name"]}}}}}},"\/api\/v1\/admin\/advertisers\/{id}":{"get":{"summary":"Get Advertiser","operationId":"getAdvertiser","description":"Returns a single advertiser by its ID.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":7,"company_name":"Acme Demand Co.","first_name":"Jane","last_name":"Doe","email":"jane@acme.example.com","status":"APPROVED","manager_id":null,"payment_frequency":null,"created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":7},"company_name":{"type":"string","example":"Acme Demand Co."},"first_name":{"type":"string","example":"Jane"},"last_name":{"type":"string","example":"Doe"},"email":{"type":"string","example":"jane@acme.example.com"},"status":{"type":"string","example":"APPROVED"},"manager_id":{"type":"string","example":null,"nullable":true},"payment_frequency":{"type":"string","example":null,"nullable":true},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T12:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"404":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"not_found","message":"Advertiser not found."},"properties":{"code":{"type":"string","example":"not_found"},"message":{"type":"string","example":"Advertiser not found."}}}}}}},"tags":["Advertisers"]},"put":{"summary":"Update Advertiser","operationId":"updateAdvertiser","description":"Partially updates an advertiser by its ID. Only\nthe fields you include in the body are updated. Manager assignment\nreplaces (not appends to) any existing manager.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":7,"company_name":"Acme Demand Co. (Renamed)","first_name":"Jane","last_name":"Doe","email":"jane@acme.example.com","status":"APPROVED","manager_id":null,"payment_frequency":2,"created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T13:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":7},"company_name":{"type":"string","example":"Acme Demand Co. (Renamed)"},"first_name":{"type":"string","example":"Jane"},"last_name":{"type":"string","example":"Doe"},"email":{"type":"string","example":"jane@acme.example.com"},"status":{"type":"string","example":"APPROVED"},"manager_id":{"type":"string","example":null,"nullable":true},"payment_frequency":{"type":"integer","example":2},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T13:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"404":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"not_found","message":"Advertiser not found."},"properties":{"code":{"type":"string","example":"not_found"},"message":{"type":"string","example":"Advertiser not found."}}}}}},"422":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"message":"The given data was invalid.","errors":{"email":["The email must be a valid email address."]}},"properties":{"message":{"type":"string","example":"The given data was invalid."},"errors":{"type":"object","properties":{"email":{"type":"array","example":["The email must be a valid email address."],"items":{"type":"string"}}}}}}}}}},"tags":["Advertisers"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"company_name":{"type":"string","description":"Advertiser company name. Must not be greater than 255 characters.","example":"Acme Demand Co. (Renamed)"},"first_name":{"type":"string","description":"First name of the primary contact. Must not be greater than 255 characters.","example":"Jane","nullable":true},"last_name":{"type":"string","description":"Last name of the primary contact. Must not be greater than 255 characters.","example":"Doe","nullable":true},"email":{"type":"string","description":"Contact email address. Must be a valid email address. Must not be greater than 255 characters.","example":"jane@acme.example.com","nullable":true},"status":{"type":"string","description":"Advertiser status. Allowed: `APPROVED`, `DENIED`, `PENDING`, `TERMINATED`.","example":"APPROVED","enum":["pending","approved","denied","terminated"]},"manager_id":{"type":"integer","description":"ID of an advertiser manager to assign, or `null` to remove the current manager. Use the Managers endpoint to retrieve valid IDs. Must match an existing stored value.","example":null,"nullable":true},"payment_frequency":{"type":"integer","description":"Payment frequency code (integer).","example":2,"nullable":true}}}}}}},"parameters":[{"in":"path","name":"id","description":"The ID of the advertiser.","example":7,"required":true,"schema":{"type":"integer"}}]},"\/api\/v1\/admin\/creatives":{"get":{"summary":"List Creatives","operationId":"listCreatives","description":"Returns a paginated list of creatives in your network. Filters are flat\nquery parameters.","parameters":[{"in":"query","name":"name","description":"Partial match on creative name (case-insensitive).","example":"banner","required":false,"schema":{"type":"string","description":"Partial match on creative name (case-insensitive).","example":"banner"}},{"in":"query","name":"campaign_id","description":"Filter by parent campaign ID.","example":12,"required":false,"schema":{"type":"integer","description":"Filter by parent campaign ID.","example":12}},{"in":"query","name":"type","description":"Filter by creative type. Allowed: `TEXT`, `DPLY`, `EMAIL`.","example":"TEXT","required":false,"schema":{"type":"string","description":"Filter by creative type. Allowed: `TEXT`, `DPLY`, `EMAIL`.","example":"TEXT"}},{"in":"query","name":"is_active","description":"Filter by activation flag.","example":true,"required":false,"schema":{"type":"boolean","description":"Filter by activation flag.","example":true}},{"in":"query","name":"created_after","description":"Return only creatives created on or after this ISO date.","example":"2026-01-01","required":false,"schema":{"type":"string","description":"Return only creatives created on or after this ISO date.","example":"2026-01-01"}},{"in":"query","name":"created_before","description":"Return only creatives created on or before this ISO date.","example":"2026-12-31","required":false,"schema":{"type":"string","description":"Return only creatives created on or before this ISO date.","example":"2026-12-31"}},{"in":"query","name":"sort","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `name`, `type`, `created_at`.","example":"-created_at","required":false,"schema":{"type":"string","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `name`, `type`, `created_at`.","example":"-created_at"}},{"in":"query","name":"per_page","description":"Items per page. Defaults to 10. Max 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page. Defaults to 10. Max 100.","example":25}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":7,"campaign_id":12,"name":"Spring Banner 728x90","destination_url":"https:\/\/...","type":"TEXT","is_active":true,"creative_redirect_id":null,"created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":10,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":7,"campaign_id":12,"name":"Spring Banner 728x90","destination_url":"https:\/\/...","type":"TEXT","is_active":true,"creative_redirect_id":null,"created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}],"items":{"type":"object","properties":{"id":{"type":"integer","example":7},"campaign_id":{"type":"integer","example":12},"name":{"type":"string","example":"Spring Banner 728x90"},"destination_url":{"type":"string","example":"https:\/\/..."},"type":{"type":"string","example":"TEXT"},"is_active":{"type":"boolean","example":true},"creative_redirect_id":{"type":"string","example":null,"nullable":true},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":10},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"422":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"message":"The selected type is invalid.","errors":{"type":["The selected type is invalid."]}},"properties":{"message":{"type":"string","example":"The selected type is invalid."},"errors":{"type":"object","properties":{"type":{"type":"array","example":["The selected type is invalid."],"items":{"type":"string"}}}}}}}}}},"tags":["Creatives"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Must not be greater than 255 characters.","example":"b","nullable":true},"campaign_id":{"type":"integer","description":"","example":16,"nullable":true},"type":{"type":"string","description":"","example":"DPLY","enum":["DPLY","EMAIL","TEXT","FILES"],"nullable":true},"is_active":{"type":"boolean","description":"","example":false,"nullable":true},"created_after":{"type":"string","description":"Must be a valid date.","example":"2026-07-02T22:57:28","nullable":true},"created_before":{"type":"string","description":"Must be a valid date. Must be a date after or equal to <code>created_after<\/code>.","example":"2052-07-25","nullable":true},"sort":{"type":"string","description":"","example":"id","enum":["id","-id","name","-name","type","-type","created_at","-created_at"],"nullable":true},"per_page":{"type":"integer","description":"Must be at least 1. Must not be greater than 100.","example":22,"nullable":true}}}}}}},"post":{"summary":"Create Creative","operationId":"createCreative","description":"Creates a new text creative attached to a campaign. The `campaign_id`\nfield accepts a campaign ID. Display and email creatives\n(which require image\/file uploads) must be created via the dashboard.","parameters":[],"responses":{"201":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":7,"campaign_id":12,"name":"Spring Banner 728x90","destination_url":"https:\/\/...","type":"text","is_active":true,"creative_redirect_id":null,"created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":7},"campaign_id":{"type":"integer","example":12},"name":{"type":"string","example":"Spring Banner 728x90"},"destination_url":{"type":"string","example":"https:\/\/..."},"type":{"type":"string","example":"text"},"is_active":{"type":"boolean","example":true},"creative_redirect_id":{"type":"string","example":null,"nullable":true},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T12:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"422":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"message":"The given data was invalid.","errors":{"campaign_id":["The selected campaign id is invalid."]}},"properties":{"message":{"type":"string","example":"The given data was invalid."},"errors":{"type":"object","properties":{"campaign_id":{"type":"array","example":["The selected campaign id is invalid."],"items":{"type":"string"}}}}}}}}}},"tags":["Creatives"],"requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","properties":{"campaign_id":{"type":"integer","description":"Public campaign ID (tenant-local) this creative belongs to.","example":12},"name":{"type":"string","description":"Internal name of the creative. Must not be greater than 255 characters.","example":"Spring Banner 728x90"},"destination_url":{"type":"string","description":"Final landing URL the creative will direct traffic to. Must be a valid URL. Must not be greater than 2048 characters.","example":"https:\/\/advertiser.example.com\/landing"},"type":{"type":"string","description":"Creative type. Currently only \"text\" is supported through the public API. Display\/email creatives must be created via the dashboard.","example":"text","enum":["text"]},"is_active":{"type":"boolean","description":"Whether the creative is enabled. Defaults to true.","example":true,"nullable":true},"creative_redirect_id":{"type":"integer","description":"Optional fallback creative ID (tenant-local).","example":null,"nullable":true}},"required":["campaign_id","name","destination_url","type"]}}}}}},"\/api\/v1\/admin\/creatives\/{id}":{"get":{"summary":"Get Creative","operationId":"getCreative","description":"Returns a single creative by its ID.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":7,"campaign_id":12,"name":"Spring Banner 728x90","destination_url":"https:\/\/...","type":"text","is_active":true,"creative_redirect_id":null,"created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T12:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":7},"campaign_id":{"type":"integer","example":12},"name":{"type":"string","example":"Spring Banner 728x90"},"destination_url":{"type":"string","example":"https:\/\/..."},"type":{"type":"string","example":"text"},"is_active":{"type":"boolean","example":true},"creative_redirect_id":{"type":"string","example":null,"nullable":true},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T12:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"404":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"not_found","message":"Creative not found."},"properties":{"code":{"type":"string","example":"not_found"},"message":{"type":"string","example":"Creative not found."}}}}}}},"tags":["Creatives"]},"put":{"summary":"Update Creative","operationId":"updateCreative","description":"Partially updates a creative by its ID. The\nparent `campaign_id` cannot be changed via this endpoint.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":{"id":7,"campaign_id":12,"name":"Spring Banner v2","destination_url":"https:\/\/...","type":"text","is_active":true,"creative_redirect_id":null,"created_at":"2026-04-30T12:00:00Z","updated_at":"2026-04-30T13:00:00Z"}},"properties":{"data":{"type":"object","properties":{"id":{"type":"integer","example":7},"campaign_id":{"type":"integer","example":12},"name":{"type":"string","example":"Spring Banner v2"},"destination_url":{"type":"string","example":"https:\/\/..."},"type":{"type":"string","example":"text"},"is_active":{"type":"boolean","example":true},"creative_redirect_id":{"type":"string","example":null,"nullable":true},"created_at":{"type":"string","example":"2026-04-30T12:00:00Z"},"updated_at":{"type":"string","example":"2026-04-30T13:00:00Z"}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"404":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"not_found","message":"Creative not found."},"properties":{"code":{"type":"string","example":"not_found"},"message":{"type":"string","example":"Creative not found."}}}}}},"422":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"message":"The given data was invalid.","errors":{"destination_url":["The destination url must be a valid URL."]}},"properties":{"message":{"type":"string","example":"The given data was invalid."},"errors":{"type":"object","properties":{"destination_url":{"type":"array","example":["The destination url must be a valid URL."],"items":{"type":"string"}}}}}}}}}},"tags":["Creatives"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Internal name of the creative. Must not be greater than 255 characters.","example":"Spring Banner v2"},"destination_url":{"type":"string","description":"Final landing URL. Must be a valid URL. Must not be greater than 2048 characters.","example":"https:\/\/advertiser.example.com\/spring-v2"},"is_active":{"type":"boolean","description":"Whether the creative is enabled.","example":true},"creative_redirect_id":{"type":"integer","description":"Optional fallback creative ID (tenant-local).","example":null,"nullable":true}}}}}}},"parameters":[{"in":"path","name":"id","description":"The ID of the creative.","example":7,"required":true,"schema":{"type":"integer"}}]},"\/api\/v1\/admin\/managers":{"get":{"summary":"List Managers","operationId":"listManagers","description":"Returns a list of users who can be assigned as managers to publishers\nand\/or advertisers. Use the returned `id` when setting `manager_id` on\na publisher or advertiser.","parameters":[{"in":"query","name":"type","description":"Filter by manager type. Allowed: `publisher`, `advertiser`, `both`.","example":"publisher","required":false,"schema":{"type":"string","description":"Filter by manager type. Allowed: `publisher`, `advertiser`, `both`.","example":"publisher"}},{"in":"query","name":"sort","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `first_name`, `last_name`, `email`, `created_at`.","example":"first_name","required":false,"schema":{"type":"string","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `first_name`, `last_name`, `email`, `created_at`.","example":"first_name"}},{"in":"query","name":"per_page","description":"Items per page. Defaults to 100. Max 100.","example":100,"required":false,"schema":{"type":"integer","description":"Items per page. Defaults to 100. Max 100.","example":100}},{"in":"query","name":"page","description":"Page number.","example":1,"required":false,"schema":{"type":"integer","description":"Page number.","example":1}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":3,"first_name":"Alice","last_name":"Smith","email":"alice@example.com","type":"publisher"},{"id":4,"first_name":"Bob","last_name":"Jones","email":"bob@example.com","type":"both"}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":100,"to":2,"total":2}},"properties":{"data":{"type":"array","example":[{"id":3,"first_name":"Alice","last_name":"Smith","email":"alice@example.com","type":"publisher"},{"id":4,"first_name":"Bob","last_name":"Jones","email":"bob@example.com","type":"both"}],"items":{"type":"object","properties":{"id":{"type":"integer","example":3},"first_name":{"type":"string","example":"Alice"},"last_name":{"type":"string","example":"Smith"},"email":{"type":"string","example":"alice@example.com"},"type":{"type":"string","example":"publisher"}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":100},"to":{"type":"integer","example":2},"total":{"type":"integer","example":2}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Managers"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"","example":"publisher","enum":["publisher","advertiser","both"],"nullable":true},"sort":{"type":"string","description":"","example":"-id","enum":["id","-id","first_name","-first_name","last_name","-last_name","email","-email","created_at","-created_at"],"nullable":true},"per_page":{"type":"integer","description":"Must be at least 1. Must not be greater than 100.","example":1,"nullable":true}}}}}}}},"\/api\/v1\/admin\/tracking-links":{"get":{"summary":"List Tracking Links","operationId":"listTrackingLinks","description":"Returns tracking links for a publisher's eligible creatives. Each record\nincludes a ready-to-use `tracking_url` (alias `click_url`).\n\nUse `tracking_domain_id` (see `GET \/admin\/tracking-domains`) to override\nthe default tracking domain in the generated URL. Use `link_type` to\nchoose which URLs are emitted.","parameters":[{"in":"query","name":"publisher_id","description":"ID of the publisher whose eligible creatives to list. Required.","example":15,"required":true,"schema":{"type":"integer","description":"ID of the publisher whose eligible creatives to list. Required.","example":15}},{"in":"query","name":"campaign_id","description":"Restrict results to a single campaign ID.","example":42,"required":false,"schema":{"type":"integer","description":"Restrict results to a single campaign ID.","example":42,"nullable":true}},{"in":"query","name":"creative_id","description":"Restrict results to a single creative ID.","example":7,"required":false,"schema":{"type":"integer","description":"Restrict results to a single creative ID.","example":7,"nullable":true}},{"in":"query","name":"creative_name","description":"Partial, case-insensitive match on the creative name. Must not be greater than 255 characters.","example":"Banner 300x250","required":false,"schema":{"type":"string","description":"Partial, case-insensitive match on the creative name. Must not be greater than 255 characters.","example":"Banner 300x250","nullable":true}},{"in":"query","name":"category_id","description":"Filter creatives whose campaign belongs to this category ID.","example":3,"required":false,"schema":{"type":"integer","description":"Filter creatives whose campaign belongs to this category ID.","example":3,"nullable":true}},{"in":"query","name":"country","description":"Comma-separated ISO 3166-1 alpha-2 country codes; matches creatives whose campaign targets at least one of the listed countries.","example":"US,CA","required":false,"schema":{"type":"string","description":"Comma-separated ISO 3166-1 alpha-2 country codes; matches creatives whose campaign targets at least one of the listed countries.","example":"US,CA","nullable":true}},{"in":"query","name":"tracking_domain_id","description":"Override the default tracking domain in the generated `tracking_url`. Use the IDs returned by `GET \/admin\/tracking-domains`.","example":2,"required":false,"schema":{"type":"integer","description":"Override the default tracking domain in the generated `tracking_url`. Use the IDs returned by `GET \/admin\/tracking-domains`.","example":2,"nullable":true}},{"in":"query","name":"link_type","description":"Which URL fields to populate. `tracking` (default) returns `tracking_url`\/`click_url`; `preview` returns only `preview_url`; `all` returns both.","example":"tracking","required":false,"schema":{"type":"string","description":"Which URL fields to populate. `tracking` (default) returns `tracking_url`\/`click_url`; `preview` returns only `preview_url`; `all` returns both.","example":"tracking","enum":["tracking","preview","all"],"nullable":true}},{"in":"query","name":"type","description":"Filter by creative type. Allowed: `DPLY`, `EMAIL`, `TEXT`.","example":"TEXT","required":false,"schema":{"type":"string","description":"Filter by creative type. Allowed: `DPLY`, `EMAIL`, `TEXT`.","example":"TEXT","enum":["DPLY","EMAIL","TEXT"],"nullable":true}},{"in":"query","name":"per_page","description":"Items per page (1\u2013100). Must be at least 1. Must not be greater than 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page (1\u2013100). Must be at least 1. Must not be greater than 100.","example":25,"nullable":true}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":7,"type":"TEXT","creative_name":"Banner 300x250","creative_category":"Finance","creative_countries":["US","CA"],"campaign_id":42,"publisher_id":15,"tracking_url":"https:\/\/track.example.com\/c\/abc123","click_url":"https:\/\/track.example.com\/c\/abc123","preview_url":null}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":25,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":7,"type":"TEXT","creative_name":"Banner 300x250","creative_category":"Finance","creative_countries":["US","CA"],"campaign_id":42,"publisher_id":15,"tracking_url":"https:\/\/track.example.com\/c\/abc123","click_url":"https:\/\/track.example.com\/c\/abc123","preview_url":null}],"items":{"type":"object","properties":{"id":{"type":"integer","example":7},"type":{"type":"string","example":"TEXT"},"creative_name":{"type":"string","example":"Banner 300x250"},"creative_category":{"type":"string","example":"Finance"},"creative_countries":{"type":"array","example":["US","CA"],"items":{"type":"string"}},"campaign_id":{"type":"integer","example":42},"publisher_id":{"type":"integer","example":15},"tracking_url":{"type":"string","example":"https:\/\/track.example.com\/c\/abc123"},"click_url":{"type":"string","example":"https:\/\/track.example.com\/c\/abc123"},"preview_url":{"type":"string","example":null,"nullable":true}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":25},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"404":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"not_found","message":"Publisher not found."},"properties":{"code":{"type":"string","example":"not_found"},"message":{"type":"string","example":"Publisher not found."}}}}}}},"tags":["Tracking Links"]}},"\/api\/v1\/admin\/tracking-domains":{"get":{"summary":"List Tracking Domains","operationId":"listTrackingDomains","description":"Returns the tracking domains configured for your tenant. Use the\nreturned `id` value with the `tracking_domain_id` query parameter on\nthe tracking-links endpoint to override the default domain in the\ngenerated click URLs. The domain marked `is_default: true` is the one\nused when no override is provided.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":1,"hostname":"track.example.com","is_default":true},{"id":2,"hostname":"go.example.com","is_default":false}]},"properties":{"data":{"type":"array","example":[{"id":1,"hostname":"track.example.com","is_default":true},{"id":2,"hostname":"go.example.com","is_default":false}],"items":{"type":"object","properties":{"id":{"type":"integer","example":1},"hostname":{"type":"string","example":"track.example.com"},"is_default":{"type":"boolean","example":true}}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Tracking Domains"]}},"\/api\/v1\/admin\/countries":{"get":{"summary":"List Countries","operationId":"listCountries","description":"Returns the list of countries supported by the platform. Use the\nreturned ISO `code` values when assigning countries to a campaign.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"code":"US","name":"United States"},{"code":"CA","name":"Canada"},{"code":"BR","name":"Brazil"}]},"properties":{"data":{"type":"array","example":[{"code":"US","name":"United States"},{"code":"CA","name":"Canada"},{"code":"BR","name":"Brazil"}],"items":{"type":"object","properties":{"code":{"type":"string","example":"US"},"name":{"type":"string","example":"United States"}}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Reference Data"]}},"\/api\/v1\/admin\/reporting\/entity":{"get":{"summary":"Entity Report","operationId":"entityReport","description":"Returns aggregated performance metrics (clicks, conversions, revenue, CPA,\nprofit) grouped by `publisher`, `advertiser` or `campaign` for the given\ndate window. The response is paginated and ordered by total revenue\n(descending). All monetary values are in your network currency.","parameters":[{"in":"query","name":"from","description":"Start of the reporting window in `YYYY-MM-DD` (interpreted in `timezone`). Defaults to today. Must be a valid date.","example":"2026-04-01","required":false,"schema":{"type":"string","description":"Start of the reporting window in `YYYY-MM-DD` (interpreted in `timezone`). Defaults to today. Must be a valid date.","example":"2026-04-01","nullable":true}},{"in":"query","name":"to","description":"End of the reporting window in `YYYY-MM-DD` (interpreted in `timezone`). Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","required":false,"schema":{"type":"string","description":"End of the reporting window in `YYYY-MM-DD` (interpreted in `timezone`). Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","nullable":true}},{"in":"query","name":"timezone","description":"IANA timezone identifier. Defaults to your network timezone. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","required":false,"schema":{"type":"string","description":"IANA timezone identifier. Defaults to your network timezone. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","nullable":true}},{"in":"query","name":"campaign_id","description":"Restrict the report to a single campaign ID.","example":42,"required":false,"schema":{"type":"integer","description":"Restrict the report to a single campaign ID.","example":42,"nullable":true}},{"in":"query","name":"publisher_id","description":"Restrict the report to a single publisher ID.","example":15,"required":false,"schema":{"type":"integer","description":"Restrict the report to a single publisher ID.","example":15,"nullable":true}},{"in":"query","name":"advertiser_id","description":"Restrict the report to a single advertiser ID.","example":7,"required":false,"schema":{"type":"integer","description":"Restrict the report to a single advertiser ID.","example":7,"nullable":true}},{"in":"query","name":"per_page","description":"Items per page. Defaults to 25. Max 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page. Defaults to 25. Max 100.","example":25,"nullable":true}},{"in":"query","name":"group_by","description":"Entity to aggregate by. One of: publisher, advertiser, campaign.","example":"publisher","required":true,"schema":{"type":"string","description":"Entity to aggregate by. One of: publisher, advertiser, campaign.","example":"publisher","enum":["publisher","advertiser","campaign"]}},{"in":"query","name":"page","description":"Page number.","example":1,"required":false,"schema":{"type":"integer","description":"Page number.","example":1}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":15,"name":"Acme Publisher","unique_clicks":5230,"converted_leads":312,"event_leads":18,"total_revenue_payout":12480.5,"total_cpa":9123,"total_profit":3357.5,"profit_margin":0.269,"conversion_rate":0.0596,"earnings_per_click":2.3863}],"links":{"first":"https:\/\/example.test\/api\/v1\/admin\/reporting\/entity?page=1","last":"https:\/\/example.test\/api\/v1\/admin\/reporting\/entity?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"https:\/\/example.test\/api\/v1\/admin\/reporting\/entity","per_page":25,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":15,"name":"Acme Publisher","unique_clicks":5230,"converted_leads":312,"event_leads":18,"total_revenue_payout":12480.5,"total_cpa":9123,"total_profit":3357.5,"profit_margin":0.269,"conversion_rate":0.0596,"earnings_per_click":2.3863}],"items":{"type":"object","properties":{"id":{"type":"integer","example":15},"name":{"type":"string","example":"Acme Publisher"},"unique_clicks":{"type":"integer","example":5230},"converted_leads":{"type":"integer","example":312},"event_leads":{"type":"integer","example":18},"total_revenue_payout":{"type":"number","example":12480.5},"total_cpa":{"type":"number","example":9123},"total_profit":{"type":"number","example":3357.5},"profit_margin":{"type":"number","example":0.269},"conversion_rate":{"type":"number","example":0.0596},"earnings_per_click":{"type":"number","example":2.3863}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"https:\/\/example.test\/api\/v1\/admin\/reporting\/entity?page=1"},"last":{"type":"string","example":"https:\/\/example.test\/api\/v1\/admin\/reporting\/entity?page=1"},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"https:\/\/example.test\/api\/v1\/admin\/reporting\/entity"},"per_page":{"type":"integer","example":25},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}},"422":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"message":"The given data was invalid.","errors":{"group_by":["The selected group_by is invalid."]}},"properties":{"message":{"type":"string","example":"The given data was invalid."},"errors":{"type":"object","properties":{"group_by":{"type":"array","example":["The selected group_by is invalid."],"items":{"type":"string"}}}}}}}}}},"tags":["Reporting"]}},"\/api\/v1\/admin\/reporting\/conversions":{"get":{"summary":"List Conversions","operationId":"listConversions","description":"Returns a paginated list of credited conversions (leads with a\n`date_credited` value) inside the given window. By default returns both\nevent and non-event conversions; use `event_only` to scope. Use `status`\nto filter by derived status (PAYABLE, PAID, PENDING, REVOKED, NOT_PAYABLE,\nBLOCKED).","parameters":[{"in":"query","name":"from","description":"Start of the conversion window. Defaults to today. Must be a valid date.","example":"2026-04-01","required":false,"schema":{"type":"string","description":"Start of the conversion window. Defaults to today. Must be a valid date.","example":"2026-04-01","nullable":true}},{"in":"query","name":"to","description":"End of the conversion window. Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","required":false,"schema":{"type":"string","description":"End of the conversion window. Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","nullable":true}},{"in":"query","name":"timezone","description":"IANA timezone identifier. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","required":false,"schema":{"type":"string","description":"IANA timezone identifier. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","nullable":true}},{"in":"query","name":"campaign_id","description":"Public campaign ID to filter by.","example":42,"required":false,"schema":{"type":"integer","description":"Public campaign ID to filter by.","example":42,"nullable":true}},{"in":"query","name":"publisher_id","description":"Public publisher ID to filter by.","example":15,"required":false,"schema":{"type":"integer","description":"Public publisher ID to filter by.","example":15,"nullable":true}},{"in":"query","name":"advertiser_id","description":"Public advertiser ID to filter by.","example":7,"required":false,"schema":{"type":"integer","description":"Public advertiser ID to filter by.","example":7,"nullable":true}},{"in":"query","name":"per_page","description":"Items per page. Defaults to 25. Max 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page. Defaults to 25. Max 100.","example":25,"nullable":true}},{"in":"query","name":"status","description":"Filter by derived status. One of: PAYABLE, PAID, PENDING, REVOKED, NOT_PAYABLE, BLOCKED.","example":"PAYABLE","required":false,"schema":{"type":"string","description":"Filter by derived status. One of: PAYABLE, PAID, PENDING, REVOKED, NOT_PAYABLE, BLOCKED.","example":"PAYABLE","enum":["PAYABLE","PAID","PENDING","REVOKED","NOT_PAYABLE","BLOCKED"],"nullable":true}},{"in":"query","name":"event_only","description":"When true, only event conversions are returned. When false, only non-event conversions.","example":false,"required":false,"schema":{"type":"boolean","description":"When true, only event conversions are returned. When false, only non-event conversions.","example":false,"nullable":true}},{"in":"query","name":"page","description":"Page number.","example":1,"required":false,"schema":{"type":"integer","description":"Page number.","example":1}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":"01HV8XKP...","campaign_id":42,"publisher_id":15,"creative_id":7,"event_id":null,"is_event":false,"status":"PAYABLE","payout":12.5,"cpa":9,"subid_1":"src-fb","subid_2":null,"subid_3":null,"subid_4":null,"subid_5":null,"subid_6":null,"subid_7":null,"ip_country_code":"US","ip_region_name":"California","created_at":"2026-04-20T10:15:00Z","date_credited":"2026-04-20T10:18:00Z"}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":25,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":"01HV8XKP...","campaign_id":42,"publisher_id":15,"creative_id":7,"event_id":null,"is_event":false,"status":"PAYABLE","payout":12.5,"cpa":9,"subid_1":"src-fb","subid_2":null,"subid_3":null,"subid_4":null,"subid_5":null,"subid_6":null,"subid_7":null,"ip_country_code":"US","ip_region_name":"California","created_at":"2026-04-20T10:15:00Z","date_credited":"2026-04-20T10:18:00Z"}],"items":{"type":"object","properties":{"id":{"type":"string","example":"01HV8XKP..."},"campaign_id":{"type":"integer","example":42},"publisher_id":{"type":"integer","example":15},"creative_id":{"type":"integer","example":7},"event_id":{"type":"string","example":null,"nullable":true},"is_event":{"type":"boolean","example":false},"status":{"type":"string","example":"PAYABLE"},"payout":{"type":"number","example":12.5},"cpa":{"type":"number","example":9},"subid_1":{"type":"string","example":"src-fb"},"subid_2":{"type":"string","example":null,"nullable":true},"subid_3":{"type":"string","example":null,"nullable":true},"subid_4":{"type":"string","example":null,"nullable":true},"subid_5":{"type":"string","example":null,"nullable":true},"subid_6":{"type":"string","example":null,"nullable":true},"subid_7":{"type":"string","example":null,"nullable":true},"ip_country_code":{"type":"string","example":"US"},"ip_region_name":{"type":"string","example":"California"},"created_at":{"type":"string","example":"2026-04-20T10:15:00Z"},"date_credited":{"type":"string","example":"2026-04-20T10:18:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":25},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Reporting"]}},"\/api\/v1\/admin\/reporting\/clicks":{"get":{"summary":"List Clicks","operationId":"listClicks","description":"Returns a paginated list of click rows (non-event leads) created inside\nthe given window. Use this endpoint for traffic-quality analysis,\ngeo\/device breakdowns or fraud review. Blocked clicks are\nincluded so you can audit them.","parameters":[{"in":"query","name":"from","description":"Start of the click window. Defaults to today. Must be a valid date.","example":"2026-04-01","required":false,"schema":{"type":"string","description":"Start of the click window. Defaults to today. Must be a valid date.","example":"2026-04-01","nullable":true}},{"in":"query","name":"to","description":"End of the click window. Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","required":false,"schema":{"type":"string","description":"End of the click window. Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","nullable":true}},{"in":"query","name":"timezone","description":"IANA timezone identifier. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","required":false,"schema":{"type":"string","description":"IANA timezone identifier. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","nullable":true}},{"in":"query","name":"campaign_id","description":"Public campaign ID to filter by.","example":42,"required":false,"schema":{"type":"integer","description":"Public campaign ID to filter by.","example":42,"nullable":true}},{"in":"query","name":"publisher_id","description":"Public publisher ID to filter by.","example":15,"required":false,"schema":{"type":"integer","description":"Public publisher ID to filter by.","example":15,"nullable":true}},{"in":"query","name":"advertiser_id","description":"Public advertiser ID to filter by.","example":7,"required":false,"schema":{"type":"integer","description":"Public advertiser ID to filter by.","example":7,"nullable":true}},{"in":"query","name":"per_page","description":"Items per page. Defaults to 25. Max 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page. Defaults to 25. Max 100.","example":25,"nullable":true}},{"in":"query","name":"page","description":"Page number.","example":1,"required":false,"schema":{"type":"integer","description":"Page number.","example":1}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":"01HV8XKP...","campaign_id":42,"publisher_id":15,"creative_id":7,"subid_1":"src-fb","subid_2":null,"subid_3":null,"subid_4":null,"subid_5":null,"subid_6":null,"subid_7":null,"ip_country_code":"US","ip_region_name":"California","device":"desktop","os":"mac","is_blocked":false,"is_thr":false,"created_at":"2026-04-20T10:15:00Z"}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":25,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":"01HV8XKP...","campaign_id":42,"publisher_id":15,"creative_id":7,"subid_1":"src-fb","subid_2":null,"subid_3":null,"subid_4":null,"subid_5":null,"subid_6":null,"subid_7":null,"ip_country_code":"US","ip_region_name":"California","device":"desktop","os":"mac","is_blocked":false,"is_thr":false,"created_at":"2026-04-20T10:15:00Z"}],"items":{"type":"object","properties":{"id":{"type":"string","example":"01HV8XKP..."},"campaign_id":{"type":"integer","example":42},"publisher_id":{"type":"integer","example":15},"creative_id":{"type":"integer","example":7},"subid_1":{"type":"string","example":"src-fb"},"subid_2":{"type":"string","example":null,"nullable":true},"subid_3":{"type":"string","example":null,"nullable":true},"subid_4":{"type":"string","example":null,"nullable":true},"subid_5":{"type":"string","example":null,"nullable":true},"subid_6":{"type":"string","example":null,"nullable":true},"subid_7":{"type":"string","example":null,"nullable":true},"ip_country_code":{"type":"string","example":"US"},"ip_region_name":{"type":"string","example":"California"},"device":{"type":"string","example":"desktop"},"os":{"type":"string","example":"mac"},"is_blocked":{"type":"boolean","example":false},"is_thr":{"type":"boolean","example":false},"created_at":{"type":"string","example":"2026-04-20T10:15:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":25},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Reporting"]}},"\/api\/v1\/admin\/reporting\/daily":{"get":{"summary":"Daily Time Series","operationId":"dailyTimeSeries","description":"Returns one row per day for the given window with aggregated metrics\n(unique clicks, converted leads, event leads, revenue, CPA, profit).\nDays are emitted in the requested timezone and labelled `YYYY-MM-DD`.","parameters":[{"in":"query","name":"from","description":"Start of the reporting window. Defaults to today. Must be a valid date.","example":"2026-04-01","required":false,"schema":{"type":"string","description":"Start of the reporting window. Defaults to today. Must be a valid date.","example":"2026-04-01","nullable":true}},{"in":"query","name":"to","description":"End of the reporting window. Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","required":false,"schema":{"type":"string","description":"End of the reporting window. Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","nullable":true}},{"in":"query","name":"timezone","description":"IANA timezone identifier. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","required":false,"schema":{"type":"string","description":"IANA timezone identifier. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","nullable":true}},{"in":"query","name":"campaign_id","description":"Public campaign ID to filter by.","example":42,"required":false,"schema":{"type":"integer","description":"Public campaign ID to filter by.","example":42,"nullable":true}},{"in":"query","name":"publisher_id","description":"Public publisher ID to filter by.","example":15,"required":false,"schema":{"type":"integer","description":"Public publisher ID to filter by.","example":15,"nullable":true}},{"in":"query","name":"advertiser_id","description":"Public advertiser ID to filter by.","example":7,"required":false,"schema":{"type":"integer","description":"Public advertiser ID to filter by.","example":7,"nullable":true}},{"in":"query","name":"per_page","description":"Must be at least 1. Must not be greater than 100.","example":1,"required":false,"schema":{"type":"integer","description":"Must be at least 1. Must not be greater than 100.","example":1,"nullable":true}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"label":"2026-04-29","unique_clicks":1820,"converted_leads":94,"event_leads":6,"total_revenue_payout":3760.5,"total_cpa":2740,"total_profit":1020.5},{"label":"2026-04-30","unique_clicks":2103,"converted_leads":118,"event_leads":9,"total_revenue_payout":4724,"total_cpa":3415,"total_profit":1309}]},"properties":{"data":{"type":"array","example":[{"label":"2026-04-29","unique_clicks":1820,"converted_leads":94,"event_leads":6,"total_revenue_payout":3760.5,"total_cpa":2740,"total_profit":1020.5},{"label":"2026-04-30","unique_clicks":2103,"converted_leads":118,"event_leads":9,"total_revenue_payout":4724,"total_cpa":3415,"total_profit":1309}],"items":{"type":"object","properties":{"label":{"type":"string","example":"2026-04-29"},"unique_clicks":{"type":"integer","example":1820},"converted_leads":{"type":"integer","example":94},"event_leads":{"type":"integer","example":6},"total_revenue_payout":{"type":"number","example":3760.5},"total_cpa":{"type":"number","example":2740},"total_profit":{"type":"number","example":1020.5}}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Reporting"]}},"\/api\/v1\/admin\/reporting\/hourly":{"get":{"summary":"Hourly Time Series","operationId":"hourlyTimeSeries","description":"Returns one row per hour for the given window with aggregated metrics\n(unique clicks, converted leads, event leads, revenue, CPA, profit).\nHours are emitted in the requested timezone and labelled\n`YYYY-MM-DDTHH:00:00\u00b1HH:MM`. Defaults to today (00:00 \u2192 23:00) so a\ncall without parameters returns 24 buckets.","parameters":[{"in":"query","name":"from","description":"Start of the reporting window. Defaults to today. Must be a valid date.","example":"2026-04-01","required":false,"schema":{"type":"string","description":"Start of the reporting window. Defaults to today. Must be a valid date.","example":"2026-04-01","nullable":true}},{"in":"query","name":"to","description":"End of the reporting window. Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","required":false,"schema":{"type":"string","description":"End of the reporting window. Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","nullable":true}},{"in":"query","name":"timezone","description":"IANA timezone identifier. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","required":false,"schema":{"type":"string","description":"IANA timezone identifier. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","nullable":true}},{"in":"query","name":"campaign_id","description":"Public campaign ID to filter by.","example":42,"required":false,"schema":{"type":"integer","description":"Public campaign ID to filter by.","example":42,"nullable":true}},{"in":"query","name":"publisher_id","description":"Public publisher ID to filter by.","example":15,"required":false,"schema":{"type":"integer","description":"Public publisher ID to filter by.","example":15,"nullable":true}},{"in":"query","name":"advertiser_id","description":"Public advertiser ID to filter by.","example":7,"required":false,"schema":{"type":"integer","description":"Public advertiser ID to filter by.","example":7,"nullable":true}},{"in":"query","name":"per_page","description":"Must be at least 1. Must not be greater than 100.","example":1,"required":false,"schema":{"type":"integer","description":"Must be at least 1. Must not be greater than 100.","example":1,"nullable":true}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"label":"2026-04-30T00:00:00-04:00","unique_clicks":42,"converted_leads":3,"event_leads":0,"total_revenue_payout":120,"total_cpa":87,"total_profit":33}]},"properties":{"data":{"type":"array","example":[{"label":"2026-04-30T00:00:00-04:00","unique_clicks":42,"converted_leads":3,"event_leads":0,"total_revenue_payout":120,"total_cpa":87,"total_profit":33}],"items":{"type":"object","properties":{"label":{"type":"string","example":"2026-04-30T00:00:00-04:00"},"unique_clicks":{"type":"integer","example":42},"converted_leads":{"type":"integer","example":3},"event_leads":{"type":"integer","example":0},"total_revenue_payout":{"type":"number","example":120},"total_cpa":{"type":"number","example":87},"total_profit":{"type":"number","example":33}}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Reporting"]}},"\/api\/v1\/admin\/reporting\/leads":{"get":{"summary":"List Lead Snapshots","operationId":"listLeadSnapshots","description":"Returns a paginated list of full lead snapshots inside the given click\nwindow. Each item contains three nested blocks: `lead` (core attributes,\nIDs, financials, URLs), `user_details` (device, browser, language) and\n`ip_intelligence` (residential\/proxy\/VPN signals, ISP, geo). Financial\nfields (`cpa`, `revenue`, `profit`) are zeroed for non-payable statuses.\n\n**Lead Status Guide**\n\n- `PAYABLE` \u2014 lead is approved and pending payment.\n- `PAID` \u2014 lead has been paid out.\n- `PENDING` \u2014 lead is awaiting advertiser approval (window not yet expired).\n- `REVOKED` \u2014 advertiser revoked the lead after initial approval.\n- `NOT_PAYABLE` \u2014 lead was not approved.\n- `BLOCKED` \u2014 lead was blocked at click time (e.g. fraud or compliance).","parameters":[{"in":"query","name":"from","description":"date Start of the click window. Defaults to today.","example":"2026-04-01","required":false,"schema":{"type":"string","description":"date Start of the click window. Defaults to today.","example":"2026-04-01","nullable":true}},{"in":"query","name":"to","description":"date End of the click window. Defaults to today.","example":"2026-04-30","required":false,"schema":{"type":"string","description":"date End of the click window. Defaults to today.","example":"2026-04-30","nullable":true}},{"in":"query","name":"timezone","description":"IANA timezone identifier.","example":"America\/New_York","required":false,"schema":{"type":"string","description":"IANA timezone identifier.","example":"America\/New_York","nullable":true}},{"in":"query","name":"campaign_id","description":"Public campaign ID.","example":42,"required":false,"schema":{"type":"integer","description":"Public campaign ID.","example":42,"nullable":true}},{"in":"query","name":"publisher_id","description":"Public publisher ID.","example":15,"required":false,"schema":{"type":"integer","description":"Public publisher ID.","example":15,"nullable":true}},{"in":"query","name":"advertiser_id","description":"Public advertiser ID.","example":7,"required":false,"schema":{"type":"integer","description":"Public advertiser ID.","example":7,"nullable":true}},{"in":"query","name":"per_page","description":"Rows per page (1\u2013100). Defaults to 25.","example":25,"required":false,"schema":{"type":"integer","description":"Rows per page (1\u2013100). Defaults to 25.","example":25,"nullable":true}},{"in":"query","name":"status","description":"Filter by derived status. One of: PAYABLE, PAID, PENDING, REVOKED, NOT_PAYABLE, BLOCKED.","example":"PAYABLE","required":false,"schema":{"type":"string","description":"Filter by derived status. One of: PAYABLE, PAID, PENDING, REVOKED, NOT_PAYABLE, BLOCKED.","example":"PAYABLE","nullable":true}},{"in":"query","name":"event_only","description":"When true, only event leads.","example":false,"required":false,"schema":{"type":"boolean","description":"When true, only event leads.","example":false,"nullable":true}},{"in":"query","name":"page","description":"Page number.","example":1,"required":false,"schema":{"type":"integer","description":"Page number.","example":1}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"lead":{"id":"01HV8XKP...","campaign_id":42,"campaign_name":"Demo","advertiser_id":7,"advertiser_name":"Acme","publisher_id":15,"publisher_name":"Pub Co","creative_id":3,"event_id":null,"event_name":null,"category_name":"Finance","click_time":"2026-04-20T10:15:00Z","date_credited":"2026-04-20T10:18:00Z","ip_address":"203.0.113.4","subid_1":"src-fb","subid_2":null,"subid_3":null,"subid_4":null,"subid_5":null,"subid_6":null,"subid_7":null,"status":"PAYABLE","trigger":"postback","original_url":"https:\/\/...","original_url_creative":"https:\/\/...","final_url":"https:\/\/...","final_url_creative":"https:\/\/...","cpa":9,"revenue":12.5,"profit":3.5},"user_details":{"device":"Mobile","brand":"Apple iPhone","os":"iOS","browser_name":"Safari","browser_version":"17.4","referrer":"https:\/\/...","language":"English","user_agent":"Mozilla\/5.0..."},"ip_intelligence":{"ip_status":false,"is_residential":true,"is_mobile":true,"is_corporate":false,"is_edu":false,"is_public":false,"is_vpn":false,"is_proxy":false,"is_hosting":false,"is_hosting_cloud":false,"is_hosting_cloud_security":false,"is_hosting_web_browser":false,"is_darknet":false,"is_consumer_privacy":false,"ip_owner":"Verizon","conn_type":"Mobile","conn_speed":"high","city":"New York","region_name":"New York","country_name":"United States","latitude":40.7128,"longitude":-74.006,"time_zone":"America\/New_York","zip_code":"10001"}}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":25,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"lead":{"id":"01HV8XKP...","campaign_id":42,"campaign_name":"Demo","advertiser_id":7,"advertiser_name":"Acme","publisher_id":15,"publisher_name":"Pub Co","creative_id":3,"event_id":null,"event_name":null,"category_name":"Finance","click_time":"2026-04-20T10:15:00Z","date_credited":"2026-04-20T10:18:00Z","ip_address":"203.0.113.4","subid_1":"src-fb","subid_2":null,"subid_3":null,"subid_4":null,"subid_5":null,"subid_6":null,"subid_7":null,"status":"PAYABLE","trigger":"postback","original_url":"https:\/\/...","original_url_creative":"https:\/\/...","final_url":"https:\/\/...","final_url_creative":"https:\/\/...","cpa":9,"revenue":12.5,"profit":3.5},"user_details":{"device":"Mobile","brand":"Apple iPhone","os":"iOS","browser_name":"Safari","browser_version":"17.4","referrer":"https:\/\/...","language":"English","user_agent":"Mozilla\/5.0..."},"ip_intelligence":{"ip_status":false,"is_residential":true,"is_mobile":true,"is_corporate":false,"is_edu":false,"is_public":false,"is_vpn":false,"is_proxy":false,"is_hosting":false,"is_hosting_cloud":false,"is_hosting_cloud_security":false,"is_hosting_web_browser":false,"is_darknet":false,"is_consumer_privacy":false,"ip_owner":"Verizon","conn_type":"Mobile","conn_speed":"high","city":"New York","region_name":"New York","country_name":"United States","latitude":40.7128,"longitude":-74.006,"time_zone":"America\/New_York","zip_code":"10001"}}],"items":{"type":"object","properties":{"lead":{"type":"object","properties":{"id":{"type":"string","example":"01HV8XKP..."},"campaign_id":{"type":"integer","example":42},"campaign_name":{"type":"string","example":"Demo"},"advertiser_id":{"type":"integer","example":7},"advertiser_name":{"type":"string","example":"Acme"},"publisher_id":{"type":"integer","example":15},"publisher_name":{"type":"string","example":"Pub Co"},"creative_id":{"type":"integer","example":3},"event_id":{"type":"string","example":null,"nullable":true},"event_name":{"type":"string","example":null,"nullable":true},"category_name":{"type":"string","example":"Finance"},"click_time":{"type":"string","example":"2026-04-20T10:15:00Z"},"date_credited":{"type":"string","example":"2026-04-20T10:18:00Z"},"ip_address":{"type":"string","example":"203.0.113.4"},"subid_1":{"type":"string","example":"src-fb"},"subid_2":{"type":"string","example":null,"nullable":true},"subid_3":{"type":"string","example":null,"nullable":true},"subid_4":{"type":"string","example":null,"nullable":true},"subid_5":{"type":"string","example":null,"nullable":true},"subid_6":{"type":"string","example":null,"nullable":true},"subid_7":{"type":"string","example":null,"nullable":true},"status":{"type":"string","example":"PAYABLE"},"trigger":{"type":"string","example":"postback"},"original_url":{"type":"string","example":"https:\/\/..."},"original_url_creative":{"type":"string","example":"https:\/\/..."},"final_url":{"type":"string","example":"https:\/\/..."},"final_url_creative":{"type":"string","example":"https:\/\/..."},"cpa":{"type":"number","example":9},"revenue":{"type":"number","example":12.5},"profit":{"type":"number","example":3.5}}},"user_details":{"type":"object","properties":{"device":{"type":"string","example":"Mobile"},"brand":{"type":"string","example":"Apple iPhone"},"os":{"type":"string","example":"iOS"},"browser_name":{"type":"string","example":"Safari"},"browser_version":{"type":"string","example":"17.4"},"referrer":{"type":"string","example":"https:\/\/..."},"language":{"type":"string","example":"English"},"user_agent":{"type":"string","example":"Mozilla\/5.0..."}}},"ip_intelligence":{"type":"object","properties":{"ip_status":{"type":"boolean","example":false},"is_residential":{"type":"boolean","example":true},"is_mobile":{"type":"boolean","example":true},"is_corporate":{"type":"boolean","example":false},"is_edu":{"type":"boolean","example":false},"is_public":{"type":"boolean","example":false},"is_vpn":{"type":"boolean","example":false},"is_proxy":{"type":"boolean","example":false},"is_hosting":{"type":"boolean","example":false},"is_hosting_cloud":{"type":"boolean","example":false},"is_hosting_cloud_security":{"type":"boolean","example":false},"is_hosting_web_browser":{"type":"boolean","example":false},"is_darknet":{"type":"boolean","example":false},"is_consumer_privacy":{"type":"boolean","example":false},"ip_owner":{"type":"string","example":"Verizon"},"conn_type":{"type":"string","example":"Mobile"},"conn_speed":{"type":"string","example":"high"},"city":{"type":"string","example":"New York"},"region_name":{"type":"string","example":"New York"},"country_name":{"type":"string","example":"United States"},"latitude":{"type":"number","example":40.7128},"longitude":{"type":"number","example":-74.006},"time_zone":{"type":"string","example":"America\/New_York"},"zip_code":{"type":"string","example":"10001"}}}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":25},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Reporting"]}},"\/api\/v1\/publisher\/campaigns":{"get":{"summary":"Publisher Campaigns","operationId":"publisherCampaigns","description":"Returns a paginated list of offers available to the authenticated publisher,\nhonouring publisher restrictions and private offer access. Filters are flat\nquery parameters.","parameters":[{"in":"query","name":"name","description":"Partial match on campaign name (case-insensitive).","example":"spring","required":false,"schema":{"type":"string","description":"Partial match on campaign name (case-insensitive).","example":"spring"}},{"in":"query","name":"offer_type","description":"Comma-separated list of offer types. Allowed: `public`, `private`, `approval`.","example":"public","required":false,"schema":{"type":"string","description":"Comma-separated list of offer types. Allowed: `public`, `private`, `approval`.","example":"public"}},{"in":"query","name":"created_after","description":"Return only campaigns created on or after this ISO date.","example":"2026-01-01","required":false,"schema":{"type":"string","description":"Return only campaigns created on or after this ISO date.","example":"2026-01-01"}},{"in":"query","name":"created_before","description":"Return only campaigns created on or before this ISO date.","example":"2026-12-31","required":false,"schema":{"type":"string","description":"Return only campaigns created on or before this ISO date.","example":"2026-12-31"}},{"in":"query","name":"sort","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `name`, `created_at`.","example":"-created_at","required":false,"schema":{"type":"string","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `name`, `created_at`.","example":"-created_at"}},{"in":"query","name":"per_page","description":"Items per page. Defaults to 10. Max 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page. Defaults to 10. Max 100.","example":25}},{"in":"query","name":"page","description":"Page number.","example":1,"required":false,"schema":{"type":"integer","description":"Page number.","example":1}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":44,"name":"Publisher Accessible Campaign","offer_type":"public","status":"ACTIVE","payout":18,"created_at":"2026-04-20T12:00:00Z"}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":10,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":44,"name":"Publisher Accessible Campaign","offer_type":"public","status":"ACTIVE","payout":18,"created_at":"2026-04-20T12:00:00Z"}],"items":{"type":"object","properties":{"id":{"type":"integer","example":44},"name":{"type":"string","example":"Publisher Accessible Campaign"},"offer_type":{"type":"string","example":"public"},"status":{"type":"string","example":"ACTIVE"},"payout":{"type":"number","example":18},"created_at":{"type":"string","example":"2026-04-20T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":10},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Publisher Campaigns"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Must not be greater than 255 characters.","example":"b","nullable":true},"offer_type":{"type":"string","description":"Must not be greater than 20 characters.","example":"ngzmiyvdljnikhwa","nullable":true},"created_after":{"type":"string","description":"Must be a valid date.","example":"2026-07-02T22:57:28","nullable":true},"created_before":{"type":"string","description":"Must be a valid date. Must be a date after or equal to <code>created_after<\/code>.","example":"2052-07-25","nullable":true},"sort":{"type":"string","description":"","example":"-name","enum":["id","-id","name","-name","created_at","-created_at"],"nullable":true},"per_page":{"type":"integer","description":"Must be at least 1. Must not be greater than 100.","example":22,"nullable":true}}}}}}}},"\/api\/v1\/publisher\/tracking-links":{"get":{"summary":"List My Tracking Links","operationId":"listMyTrackingLinks","description":"Returns the tracking links available to the authenticated publisher.\nEach item includes the obfuscated `tracking_url` (alias `click_url`)\nready to be served. Honours restricted advertisers\/campaigns and\nprivate\/approval offer access.\n\nUse `tracking_domain_id` (see `GET \/publisher\/tracking-domains`) to\noverride the default tracking domain in the generated URL. Use\n`link_type` to choose which URLs are emitted.","parameters":[{"in":"query","name":"campaign_id","description":"Restrict results to a single campaign ID.","example":42,"required":false,"schema":{"type":"integer","description":"Restrict results to a single campaign ID.","example":42,"nullable":true}},{"in":"query","name":"creative_id","description":"Restrict results to a single creative ID.","example":7,"required":false,"schema":{"type":"integer","description":"Restrict results to a single creative ID.","example":7,"nullable":true}},{"in":"query","name":"creative_name","description":"Partial, case-insensitive match on the creative name. Must not be greater than 255 characters.","example":"Banner 300x250","required":false,"schema":{"type":"string","description":"Partial, case-insensitive match on the creative name. Must not be greater than 255 characters.","example":"Banner 300x250","nullable":true}},{"in":"query","name":"category_id","description":"Filter creatives whose campaign belongs to this category ID.","example":3,"required":false,"schema":{"type":"integer","description":"Filter creatives whose campaign belongs to this category ID.","example":3,"nullable":true}},{"in":"query","name":"country","description":"Comma-separated ISO 3166-1 alpha-2 country codes; matches creatives whose campaign targets at least one of the listed countries.","example":"US,CA","required":false,"schema":{"type":"string","description":"Comma-separated ISO 3166-1 alpha-2 country codes; matches creatives whose campaign targets at least one of the listed countries.","example":"US,CA","nullable":true}},{"in":"query","name":"tracking_domain_id","description":"Override the default tracking domain in the generated `tracking_url`. Use the IDs returned by `GET \/publisher\/tracking-domains`.","example":2,"required":false,"schema":{"type":"integer","description":"Override the default tracking domain in the generated `tracking_url`. Use the IDs returned by `GET \/publisher\/tracking-domains`.","example":2,"nullable":true}},{"in":"query","name":"link_type","description":"Which URL fields to populate. `tracking` (default) returns `tracking_url`\/`click_url`; `preview` returns only `preview_url`; `all` returns both.","example":"tracking","required":false,"schema":{"type":"string","description":"Which URL fields to populate. `tracking` (default) returns `tracking_url`\/`click_url`; `preview` returns only `preview_url`; `all` returns both.","example":"tracking","enum":["tracking","preview","all"],"nullable":true}},{"in":"query","name":"type","description":"Filter by creative type. Allowed: `DPLY`, `EMAIL`, `TEXT`.","example":"TEXT","required":false,"schema":{"type":"string","description":"Filter by creative type. Allowed: `DPLY`, `EMAIL`, `TEXT`.","example":"TEXT","enum":["DPLY","EMAIL","TEXT"],"nullable":true}},{"in":"query","name":"per_page","description":"Items per page (1\u2013100). Must be at least 1. Must not be greater than 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page (1\u2013100). Must be at least 1. Must not be greater than 100.","example":25,"nullable":true}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":7,"type":"TEXT","creative_name":"Banner 300x250","creative_category":"Finance","creative_countries":["US","CA"],"campaign_id":42,"publisher_id":15,"tracking_url":"https:\/\/track.example.com\/c\/abc123","click_url":"https:\/\/track.example.com\/c\/abc123","preview_url":null}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":25,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":7,"type":"TEXT","creative_name":"Banner 300x250","creative_category":"Finance","creative_countries":["US","CA"],"campaign_id":42,"publisher_id":15,"tracking_url":"https:\/\/track.example.com\/c\/abc123","click_url":"https:\/\/track.example.com\/c\/abc123","preview_url":null}],"items":{"type":"object","properties":{"id":{"type":"integer","example":7},"type":{"type":"string","example":"TEXT"},"creative_name":{"type":"string","example":"Banner 300x250"},"creative_category":{"type":"string","example":"Finance"},"creative_countries":{"type":"array","example":["US","CA"],"items":{"type":"string"}},"campaign_id":{"type":"integer","example":42},"publisher_id":{"type":"integer","example":15},"tracking_url":{"type":"string","example":"https:\/\/track.example.com\/c\/abc123"},"click_url":{"type":"string","example":"https:\/\/track.example.com\/c\/abc123"},"preview_url":{"type":"string","example":null,"nullable":true}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":25},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Publisher Tracking Links"]}},"\/api\/v1\/publisher\/tracking-domains":{"get":{"summary":"List Tracking Domains","operationId":"listTrackingDomains","description":"Returns the tracking domains configured for your network. Use the\nreturned `id` value with the `tracking_domain_id` query parameter on\nthe tracking-links endpoint to override the default domain.","parameters":[],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":1,"hostname":"track.example.com","is_default":true},{"id":2,"hostname":"go.example.com","is_default":false}]},"properties":{"data":{"type":"array","example":[{"id":1,"hostname":"track.example.com","is_default":true},{"id":2,"hostname":"go.example.com","is_default":false}],"items":{"type":"object","properties":{"id":{"type":"integer","example":1},"hostname":{"type":"string","example":"track.example.com"},"is_default":{"type":"boolean","example":true}}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Publisher Tracking Domains"]}},"\/api\/v1\/publisher\/leads":{"get":{"summary":"List My Lead Snapshots","operationId":"listMyLeadSnapshots","description":"Returns a paginated list of full lead snapshots for the authenticated\npublisher inside the given click window. Any `publisher_id` query\nparameter is ignored; results are always scoped to the authenticated\npublisher.\n\n**Lead Status Guide**\n\n- `PAYABLE` \u2014 lead is approved and pending payment.\n- `PAID` \u2014 lead has been paid out.\n- `PENDING` \u2014 lead is awaiting advertiser approval (window not yet expired).\n- `REVOKED` \u2014 advertiser revoked the lead after initial approval.\n- `NOT_PAYABLE` \u2014 lead was not approved.\n- `BLOCKED` \u2014 lead was blocked at click time (e.g. fraud or compliance).","parameters":[{"in":"query","name":"from","description":"Start of the click window (date the lead was created). Defaults to today. Must be a valid date.","example":"2026-04-01","required":false,"schema":{"type":"string","description":"Start of the click window (date the lead was created). Defaults to today. Must be a valid date.","example":"2026-04-01","nullable":true}},{"in":"query","name":"to","description":"End of the click window. Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","required":false,"schema":{"type":"string","description":"End of the click window. Defaults to today. Must be a valid date. Must be a date after or equal to <code>from<\/code>.","example":"2026-04-30","nullable":true}},{"in":"query","name":"timezone","description":"IANA timezone identifier. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","required":false,"schema":{"type":"string","description":"IANA timezone identifier. Must be a valid time zone, such as <code>Africa\/Accra<\/code>.","example":"America\/New_York","nullable":true}},{"in":"query","name":"campaign_id","description":"Public campaign ID to filter by.","example":42,"required":false,"schema":{"type":"integer","description":"Public campaign ID to filter by.","example":42,"nullable":true}},{"in":"query","name":"publisher_id","description":"","example":16,"required":false,"schema":{"type":"integer","description":"","example":16,"nullable":true}},{"in":"query","name":"advertiser_id","description":"","example":16,"required":false,"schema":{"type":"integer","description":"","example":16,"nullable":true}},{"in":"query","name":"per_page","description":"Rows per page (1\u2013100). Defaults to 25. Must be at least 1. Must not be greater than 100.","example":25,"required":false,"schema":{"type":"integer","description":"Rows per page (1\u2013100). Defaults to 25. Must be at least 1. Must not be greater than 100.","example":25,"nullable":true}},{"in":"query","name":"status","description":"Filter by derived status. One of: PAYABLE, PAID, PENDING, REVOKED, NOT_PAYABLE, BLOCKED.","example":"PAYABLE","required":false,"schema":{"type":"string","description":"Filter by derived status. One of: PAYABLE, PAID, PENDING, REVOKED, NOT_PAYABLE, BLOCKED.","example":"PAYABLE","enum":["PAYABLE","PAID","PENDING","REVOKED","NOT_PAYABLE","BLOCKED"],"nullable":true}},{"in":"query","name":"event_only","description":"When true, only event leads are returned. When false, only non-event leads.","example":false,"required":false,"schema":{"type":"boolean","description":"When true, only event leads are returned. When false, only non-event leads.","example":false,"nullable":true}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"lead":{"id":"01HV8XKP...","campaign_id":42,"campaign_name":"Demo Campaign","publisher_id":15,"publisher_name":"Pub Co","creative_id":3,"event_id":null,"event_name":null,"category_name":"Finance","cpa":12.5,"click_time":"2026-04-20T10:15:00Z","date_credited":"2026-04-20T10:18:00Z","ip_address":"203.0.113.4","subid_1":"src-ig","subid_2":null,"subid_3":null,"subid_4":null,"subid_5":null,"subid_6":null,"subid_7":null,"status":"PAYABLE","trigger":"postback","original_url":"https:\/\/...","original_url_creative":"https:\/\/...","final_url":"https:\/\/...","final_url_creative":"https:\/\/..."},"user_details":{"device":"Mobile","brand":"Apple iPhone","os":"iOS","browser_name":"Safari","browser_version":"17.4","referrer":"https:\/\/...","language":"English","user_agent":"Mozilla\/5.0..."},"ip_intelligence":{"ip_status":false,"is_residential":true,"is_mobile":true,"is_corporate":false,"is_edu":false,"is_public":false,"is_vpn":false,"is_proxy":false,"is_hosting":false,"is_hosting_cloud":false,"is_hosting_cloud_security":false,"is_hosting_web_browser":false,"is_darknet":false,"is_consumer_privacy":false,"ip_owner":"Verizon","conn_type":"Mobile","conn_speed":"high","city":"New York","region_name":"New York","country_name":"United States","latitude":40.7128,"longitude":-74.006,"time_zone":"America\/New_York","zip_code":"10001"}}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":25,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"lead":{"id":"01HV8XKP...","campaign_id":42,"campaign_name":"Demo Campaign","publisher_id":15,"publisher_name":"Pub Co","creative_id":3,"event_id":null,"event_name":null,"category_name":"Finance","cpa":12.5,"click_time":"2026-04-20T10:15:00Z","date_credited":"2026-04-20T10:18:00Z","ip_address":"203.0.113.4","subid_1":"src-ig","subid_2":null,"subid_3":null,"subid_4":null,"subid_5":null,"subid_6":null,"subid_7":null,"status":"PAYABLE","trigger":"postback","original_url":"https:\/\/...","original_url_creative":"https:\/\/...","final_url":"https:\/\/...","final_url_creative":"https:\/\/..."},"user_details":{"device":"Mobile","brand":"Apple iPhone","os":"iOS","browser_name":"Safari","browser_version":"17.4","referrer":"https:\/\/...","language":"English","user_agent":"Mozilla\/5.0..."},"ip_intelligence":{"ip_status":false,"is_residential":true,"is_mobile":true,"is_corporate":false,"is_edu":false,"is_public":false,"is_vpn":false,"is_proxy":false,"is_hosting":false,"is_hosting_cloud":false,"is_hosting_cloud_security":false,"is_hosting_web_browser":false,"is_darknet":false,"is_consumer_privacy":false,"ip_owner":"Verizon","conn_type":"Mobile","conn_speed":"high","city":"New York","region_name":"New York","country_name":"United States","latitude":40.7128,"longitude":-74.006,"time_zone":"America\/New_York","zip_code":"10001"}}],"items":{"type":"object","properties":{"lead":{"type":"object","properties":{"id":{"type":"string","example":"01HV8XKP..."},"campaign_id":{"type":"integer","example":42},"campaign_name":{"type":"string","example":"Demo Campaign"},"publisher_id":{"type":"integer","example":15},"publisher_name":{"type":"string","example":"Pub Co"},"creative_id":{"type":"integer","example":3},"event_id":{"type":"string","example":null,"nullable":true},"event_name":{"type":"string","example":null,"nullable":true},"category_name":{"type":"string","example":"Finance"},"cpa":{"type":"number","example":12.5},"click_time":{"type":"string","example":"2026-04-20T10:15:00Z"},"date_credited":{"type":"string","example":"2026-04-20T10:18:00Z"},"ip_address":{"type":"string","example":"203.0.113.4"},"subid_1":{"type":"string","example":"src-ig"},"subid_2":{"type":"string","example":null,"nullable":true},"subid_3":{"type":"string","example":null,"nullable":true},"subid_4":{"type":"string","example":null,"nullable":true},"subid_5":{"type":"string","example":null,"nullable":true},"subid_6":{"type":"string","example":null,"nullable":true},"subid_7":{"type":"string","example":null,"nullable":true},"status":{"type":"string","example":"PAYABLE"},"trigger":{"type":"string","example":"postback"},"original_url":{"type":"string","example":"https:\/\/..."},"original_url_creative":{"type":"string","example":"https:\/\/..."},"final_url":{"type":"string","example":"https:\/\/..."},"final_url_creative":{"type":"string","example":"https:\/\/..."}}},"user_details":{"type":"object","properties":{"device":{"type":"string","example":"Mobile"},"brand":{"type":"string","example":"Apple iPhone"},"os":{"type":"string","example":"iOS"},"browser_name":{"type":"string","example":"Safari"},"browser_version":{"type":"string","example":"17.4"},"referrer":{"type":"string","example":"https:\/\/..."},"language":{"type":"string","example":"English"},"user_agent":{"type":"string","example":"Mozilla\/5.0..."}}},"ip_intelligence":{"type":"object","properties":{"ip_status":{"type":"boolean","example":false},"is_residential":{"type":"boolean","example":true},"is_mobile":{"type":"boolean","example":true},"is_corporate":{"type":"boolean","example":false},"is_edu":{"type":"boolean","example":false},"is_public":{"type":"boolean","example":false},"is_vpn":{"type":"boolean","example":false},"is_proxy":{"type":"boolean","example":false},"is_hosting":{"type":"boolean","example":false},"is_hosting_cloud":{"type":"boolean","example":false},"is_hosting_cloud_security":{"type":"boolean","example":false},"is_hosting_web_browser":{"type":"boolean","example":false},"is_darknet":{"type":"boolean","example":false},"is_consumer_privacy":{"type":"boolean","example":false},"ip_owner":{"type":"string","example":"Verizon"},"conn_type":{"type":"string","example":"Mobile"},"conn_speed":{"type":"string","example":"high"},"city":{"type":"string","example":"New York"},"region_name":{"type":"string","example":"New York"},"country_name":{"type":"string","example":"United States"},"latitude":{"type":"number","example":40.7128},"longitude":{"type":"number","example":-74.006},"time_zone":{"type":"string","example":"America\/New_York"},"zip_code":{"type":"string","example":"10001"}}}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":25},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Publisher Reporting"]}},"\/api\/v1\/advertiser\/campaigns":{"get":{"summary":"Advertiser Campaigns","operationId":"advertiserCampaigns","description":"Returns a paginated list of campaigns owned by the authenticated advertiser.\nFilters are flat query parameters; multiple values can be passed as a\ncomma-separated list (e.g. `status=ACTIVE,EXPIRING`).","parameters":[{"in":"query","name":"name","description":"Partial match on campaign name (case-insensitive).","example":"spring","required":false,"schema":{"type":"string","description":"Partial match on campaign name (case-insensitive).","example":"spring"}},{"in":"query","name":"status","description":"Comma-separated list of statuses. Allowed: `ACTIVE`, `EXPIRING`, `EXPIRED`.","example":"ACTIVE","required":false,"schema":{"type":"string","description":"Comma-separated list of statuses. Allowed: `ACTIVE`, `EXPIRING`, `EXPIRED`.","example":"ACTIVE"}},{"in":"query","name":"offer_type","description":"Comma-separated list of offer types. Allowed: `public`, `private`, `approval`.","example":"public","required":false,"schema":{"type":"string","description":"Comma-separated list of offer types. Allowed: `public`, `private`, `approval`.","example":"public"}},{"in":"query","name":"created_after","description":"Return only campaigns created on or after this ISO date.","example":"2026-01-01","required":false,"schema":{"type":"string","description":"Return only campaigns created on or after this ISO date.","example":"2026-01-01"}},{"in":"query","name":"created_before","description":"Return only campaigns created on or before this ISO date.","example":"2026-12-31","required":false,"schema":{"type":"string","description":"Return only campaigns created on or before this ISO date.","example":"2026-12-31"}},{"in":"query","name":"sort","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `name`, `status`, `cpa`, `created_at`.","example":"-created_at","required":false,"schema":{"type":"string","description":"Sort by field. Prefix with `-` for descending. Allowed: `id`, `name`, `status`, `cpa`, `created_at`.","example":"-created_at"}},{"in":"query","name":"per_page","description":"Items per page. Defaults to 10. Max 100.","example":25,"required":false,"schema":{"type":"integer","description":"Items per page. Defaults to 10. Max 100.","example":25}},{"in":"query","name":"page","description":"Page number.","example":1,"required":false,"schema":{"type":"integer","description":"Page number.","example":1}}],"responses":{"200":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"data":[{"id":12,"name":"Advertiser Owned Campaign","advertiser_id":7,"offer_type":"public","status":"ACTIVE","payout":18,"created_at":"2026-04-20T12:00:00Z"}],"links":{"first":"...","last":"...","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"path":"...","per_page":10,"to":1,"total":1}},"properties":{"data":{"type":"array","example":[{"id":12,"name":"Advertiser Owned Campaign","advertiser_id":7,"offer_type":"public","status":"ACTIVE","payout":18,"created_at":"2026-04-20T12:00:00Z"}],"items":{"type":"object","properties":{"id":{"type":"integer","example":12},"name":{"type":"string","example":"Advertiser Owned Campaign"},"advertiser_id":{"type":"integer","example":7},"offer_type":{"type":"string","example":"public"},"status":{"type":"string","example":"ACTIVE"},"payout":{"type":"number","example":18},"created_at":{"type":"string","example":"2026-04-20T12:00:00Z"}}}},"links":{"type":"object","properties":{"first":{"type":"string","example":"..."},"last":{"type":"string","example":"..."},"prev":{"type":"string","example":null,"nullable":true},"next":{"type":"string","example":null,"nullable":true}}},"meta":{"type":"object","properties":{"current_page":{"type":"integer","example":1},"from":{"type":"integer","example":1},"last_page":{"type":"integer","example":1},"path":{"type":"string","example":"..."},"per_page":{"type":"integer","example":10},"to":{"type":"integer","example":1},"total":{"type":"integer","example":1}}}}}}}},"401":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"unauthenticated","message":"Authentication is required to access this resource."},"properties":{"code":{"type":"string","example":"unauthenticated"},"message":{"type":"string","example":"Authentication is required to access this resource."}}}}}},"403":{"description":"","content":{"application\/json":{"schema":{"type":"object","example":{"code":"forbidden","message":"You are not authorized to perform this action."},"properties":{"code":{"type":"string","example":"forbidden"},"message":{"type":"string","example":"You are not authorized to perform this action."}}}}}}},"tags":["Advertiser Campaigns"],"requestBody":{"required":false,"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Must not be greater than 255 characters.","example":"b","nullable":true},"status":{"type":"string","description":"Must not be greater than 255 characters.","example":"n","nullable":true},"offer_type":{"type":"string","description":"Must not be greater than 20 characters.","example":"gzmiyvdljnikhway","nullable":true},"created_after":{"type":"string","description":"Must be a valid date.","example":"2026-07-02T22:57:28","nullable":true},"created_before":{"type":"string","description":"Must be a valid date. Must be a date after or equal to <code>created_after<\/code>.","example":"2052-07-25","nullable":true},"sort":{"type":"string","description":"","example":"name","enum":["id","-id","name","-name","status","-status","cpa","-cpa","created_at","-created_at"],"nullable":true},"per_page":{"type":"integer","description":"Must be at least 1. Must not be greater than 100.","example":22,"nullable":true}}}}}}}}}}