{"openapi":"3.1.0","info":{"title":"Rendezvu Brand API","version":"1","description":"Read-only, server-to-server access to one brand's Rendezvu data. Authenticate with a secret key as a Bearer token. Limits: 60 requests per minute per key, 120 per IP."},"externalDocs":{"url":"https://www.rendezvu.co/docs/api"},"servers":[{"url":"https://api.rendezvu.co/api/brand/v1"}],"security":[{"bearerAuth":[]}],"paths":{"/me":{"get":{"operationId":"meRetrieve","summary":"Retrieve the current brand and key","description":"Returns the brand the key belongs to and the key’s own metadata. Needs no scope, so it is the call to make first: if it answers 200, the key works.","tags":["me"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/brand#retrieve-the-current-brand-and-key"},"x-rendezvu-scope":null,"x-rendezvu-plan-feature":null,"parameters":[],"responses":{"200":{"description":"The brand and the key that authenticated the request.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"brand":{"type":"object","properties":{"id":{"type":"string","description":"The brand’s Rendezvu id (UUID)."},"name":{"type":"string","description":"The brand name."}},"description":"The brand the key belongs to. Every request with this key reads this brand’s data and no other."},"key":{"type":"object","properties":{"id":{"type":"string","description":"The key’s id, as listed in the console."},"scopes":{"type":"array","items":{"type":"string"},"description":"The scopes this key carries."},"expires_at":{"type":"string","format":"date-time","description":"When the key stops working."}},"description":"The key that made the request. Never the secret."}}},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":{"brand":{"id":"3d9a7c1e-5b2f-4a8d-9e6c-1f0b2a3c4d5e","name":"Northfork Gear Co."},"key":{"id":"0f9e8d7c-6b5a-4c3d-9e2f-1a0b9c8d7e6f","scopes":["analytics:read","content:read"],"expires_at":"2027-01-06T17:42:10.000Z"}},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/analytics/clicks":{"get":{"operationId":"analyticsClicks","summary":"Retrieve click analytics","description":"Clicks, views and sales for your products in one call: a summary, a time series, and your top hosts and products. Human traffic only; known bots are filtered out before anything is counted.","tags":["analytics"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/analytics#retrieve-click-analytics"},"security":[{"bearerAuth":["analytics:read"]}],"x-rendezvu-scope":"analytics:read","x-rendezvu-plan-feature":"Analytics","parameters":[{"name":"start_date","in":"query","required":false,"description":"Only activity on or after this ISO 8601 date (YYYY-MM-DD) or timestamp, UTC.","schema":{"type":"string","format":"date"}},{"name":"end_date","in":"query","required":false,"description":"Only activity on or before this ISO 8601 date or timestamp, UTC.","schema":{"type":"string","format":"date"}},{"name":"group_by","in":"query","required":false,"description":"The bucket size of `timeseries`.","schema":{"type":"string","enum":["day","week","month"],"default":"day"}},{"name":"host_id","in":"query","required":false,"description":"Limit everything to one host (UUID).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"How many rows `top_hosts` and `top_products` return, between 1 and 100.","schema":{"type":"integer","default":"20"}}],"responses":{"200":{"description":"A summary for the range, a time series, and top-N hosts and products.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"summary":{"type":"object","properties":{"total_clicks":{"type":"integer","description":"Every tracked click on your products."},"product_clicks":{"type":"integer","description":"Clicks on a product card."},"product_views":{"type":"integer","description":"Product page views."},"buy_now_clicks":{"type":"integer","description":"Clicks through to your store."},"unique_buy_now_clicks":{"type":"integer","description":"Buy-now clicks, one per session."},"profile_views":{"type":"integer","description":"Views of host profiles that feature you."},"list_views":{"type":"integer","description":"Views of gear lists that feature you."},"opportunity_clicks":{"type":"integer","description":"Clicks on your campaign links."},"unique_sessions":{"type":"integer","description":"Distinct browsing sessions."},"unique_users":{"type":"integer","description":"Distinct signed-in shoppers."},"orders":{"type":"integer","description":"Attributed orders, across every connected store and network."},"revenue":{"type":"number","description":"Order totals, in your store currency."},"subtotal_revenue":{"type":"number","description":"Order subtotals before tax and shipping."},"conversion_rate":{"type":"number","description":"Tracked orders divided by buy-now clicks, as a ratio between 0 and 1."},"manual_orders":{"type":"integer","description":"Orders your team attributed by hand."}},"description":"Totals for the whole range."},"timeseries":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The start of the bucket."},"total_clicks":{"type":"integer","description":"As in `summary`."},"product_clicks":{"type":"integer","description":"As in `summary`."},"buy_now_clicks":{"type":"integer","description":"As in `summary`."},"unique_buy_now_clicks":{"type":"integer","description":"As in `summary`."},"profile_views":{"type":"integer","description":"As in `summary`."},"list_views":{"type":"integer","description":"As in `summary`."},"unique_sessions":{"type":"integer","description":"As in `summary`."},"orders":{"type":"integer","description":"As in `summary`."},"revenue":{"type":"number","description":"As in `summary`."},"subtotal_revenue":{"type":"number","description":"As in `summary`."},"conversion_rate":{"type":"number","description":"As in `summary`."}}},"description":"One point per `group_by` bucket."},"top_hosts":{"type":"array","items":{"type":"object","properties":{"host":{"type":["object","null"],"properties":{"id":{"type":"string","description":"The host’s Rendezvu user id (UUID)."},"username":{"type":["string","null"],"description":"The host’s handle, as in rendezvu.co/username."},"first_name":{"type":["string","null"],"description":"First name."},"last_name":{"type":["string","null"],"description":"Last name."},"profile_photo":{"type":["string","null"],"description":"URL of the host’s profile photo."}},"description":"The host’s public identity."},"total_clicks":{"type":"integer","description":"As in `summary`."},"product_clicks":{"type":"integer","description":"As in `summary`."},"buy_now_clicks":{"type":"integer","description":"As in `summary`."},"unique_buy_now_clicks":{"type":"integer","description":"As in `summary`."},"unique_sessions":{"type":"integer","description":"As in `summary`."},"orders":{"type":"integer","description":"As in `summary`."},"revenue":{"type":"number","description":"As in `summary`."},"subtotal_revenue":{"type":"number","description":"As in `summary`."},"conversion_rate":{"type":"number","description":"As in `summary`."}}},"description":"Hosts ranked by clicks."},"top_products":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"string","description":"The Rendezvu product id."},"title":{"type":"string","description":"Product title."},"brand_name":{"type":"string","description":"The brand on the product."},"total_clicks":{"type":"integer","description":"As in `summary`."},"product_clicks":{"type":"integer","description":"As in `summary`."},"buy_now_clicks":{"type":"integer","description":"As in `summary`."},"unique_buy_now_clicks":{"type":"integer","description":"As in `summary`."}}},"description":"Products ranked by clicks."}}},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":{"summary":{"total_clicks":4210,"product_clicks":2984,"product_views":1870,"buy_now_clicks":1126,"unique_buy_now_clicks":948,"profile_views":3120,"list_views":2455,"opportunity_clicks":312,"unique_sessions":2701,"unique_users":418,"orders":61,"revenue":9843.5,"subtotal_revenue":8910,"conversion_rate":0.0542,"manual_orders":3},"timeseries":[{"date":"2026-09-01","total_clicks":988,"product_clicks":702,"buy_now_clicks":260,"unique_buy_now_clicks":221,"profile_views":740,"list_views":588,"unique_sessions":640,"orders":14,"revenue":2210,"subtotal_revenue":1998,"conversion_rate":0.0538}],"top_hosts":[{"host":{"id":"6f1c2a9e-3b4d-4e1f-9a8b-2c7d5e6f7a81","username":"jordanalpine","first_name":"Jordan","last_name":"Reyes","profile_photo":"https://media.rendezvu.co/6f1c2a9e_profile.jpg"},"total_clicks":1204,"product_clicks":866,"buy_now_clicks":341,"unique_buy_now_clicks":290,"unique_sessions":802,"orders":22,"revenue":3480,"subtotal_revenue":3150,"conversion_rate":0.0645}],"top_products":[{"product_id":"5c6d7e8f-9a0b-4c1d-8e2f-3a4b5c6d7e8f","title":"Ridgeline 30L Pack","brand_name":"Northfork Gear Co.","total_clicks":640,"product_clicks":455,"buy_now_clicks":172,"unique_buy_now_clicks":150}]},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Your plan doesn't include this data, or the subscription is inactive.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/analytics/hosts":{"get":{"operationId":"analyticsHosts","summary":"List host performance","description":"Clicks and sales per host, all time. Use it to rank your roster by what each host actually sells.","tags":["analytics"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/analytics#list-host-performance"},"security":[{"bearerAuth":["analytics:read"]}],"x-rendezvu-scope":"analytics:read","x-rendezvu-plan-feature":"Analytics","parameters":[{"name":"page","in":"query","required":false,"description":"The page to return, starting at 1. At most 10,000.","schema":{"type":"integer","default":"1"}},{"name":"per_page","in":"query","required":false,"description":"Items per page, between 1 and 100.","schema":{"type":"integer","default":"25"}},{"name":"sort","in":"query","required":false,"description":"What to rank by. `actions` is orders.","schema":{"type":"string","enum":["clicks","buy_now_clicks","actions","sale_amount"],"default":"sale_amount"}},{"name":"order","in":"query","required":false,"description":"Sort direction.","schema":{"type":"string","enum":["asc","desc"],"default":"desc"}}],"responses":{"200":{"description":"A page of hosts with their totals.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"array","items":{"type":"object","properties":{"host":{"type":["object","null"],"properties":{"id":{"type":"string","description":"The host’s Rendezvu user id (UUID)."},"username":{"type":["string","null"],"description":"The host’s handle, as in rendezvu.co/username."},"first_name":{"type":["string","null"],"description":"First name."},"last_name":{"type":["string","null"],"description":"Last name."},"profile_photo":{"type":["string","null"],"description":"URL of the host’s profile photo."}},"description":"The host. `id` can be null for a sale attributed to a username that no longer exists."},"clicks":{"type":"integer","description":"Clicks on your products from this host."},"buy_now_clicks":{"type":"integer","description":"Clicks through to your store."},"orders":{"type":"integer","description":"Attributed orders."},"sales":{"type":"number","description":"Attributed sales, in your store currency."}}}},"pagination":{"$ref":"#/components/schemas/Pagination"},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":[{"host":{"id":"6f1c2a9e-3b4d-4e1f-9a8b-2c7d5e6f7a81","username":"jordanalpine","first_name":"Jordan","last_name":"Reyes","profile_photo":"https://media.rendezvu.co/6f1c2a9e_profile.jpg"},"clicks":5120,"buy_now_clicks":1488,"orders":96,"sales":15412},{"host":{"id":"b2e4d6f8-1a3c-4e5f-8b7d-9c0e1f2a3b4c","username":"sam.on.granite","first_name":"Sam","last_name":"Okafor","profile_photo":null},"clicks":2210,"buy_now_clicks":610,"orders":41,"sales":6390.5}],"pagination":{"page":1,"per_page":2,"total_items":37,"total_pages":19,"has_next":true,"has_prev":false},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Your plan doesn't include this data, or the subscription is inactive.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/orders":{"get":{"operationId":"ordersList","summary":"List orders","description":"Every order Rendezvu attributed to one of your hosts, across Shopify, Squarespace, WooCommerce, AvantLink, Impact, Awin, Rakuten and CJ. The same set as the Orders tab in your console.","tags":["orders"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/orders#list-orders"},"security":[{"bearerAuth":["analytics:read"]}],"x-rendezvu-scope":"analytics:read","x-rendezvu-plan-feature":"Analytics","parameters":[{"name":"page","in":"query","required":false,"description":"The page to return, starting at 1. At most 10,000.","schema":{"type":"integer","default":"1"}},{"name":"per_page","in":"query","required":false,"description":"Items per page, between 1 and 100.","schema":{"type":"integer","default":"25"}},{"name":"start_date","in":"query","required":false,"description":"Only orders placed on or after this ISO 8601 date (YYYY-MM-DD) or timestamp, UTC.","schema":{"type":"string","format":"date"}},{"name":"end_date","in":"query","required":false,"description":"Only orders placed on or before this ISO 8601 date or timestamp, UTC.","schema":{"type":"string","format":"date"}},{"name":"status","in":"query","required":false,"description":"Filter by order state.","schema":{"type":"string","enum":["all","active","cancelled","refunded"],"default":"all"}}],"responses":{"200":{"description":"A page of orders, newest first.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The Rendezvu order id."},"external_order_id":{"type":["string","null"],"description":"The order id in your store or network."},"order_number":{"type":["string","null"],"description":"The order number your customer saw."},"order_date":{"type":"string","format":"date-time","description":"When the order was placed."},"currency":{"type":["string","null"],"description":"ISO 4217 currency code."},"total_amount":{"type":["number","null"],"description":"Order total."},"subtotal_amount":{"type":["number","null"],"description":"Subtotal before tax and shipping."},"refund_amount":{"type":["number","null"],"description":"Amount refunded so far."},"financial_status":{"type":["string","null"],"description":"Payment state as your store reports it, such as paid or partially_refunded."},"fulfillment_status":{"type":["string","null"],"description":"Fulfillment state as your store reports it."},"is_cancelled":{"type":"boolean","description":"The order was cancelled."},"is_refunded":{"type":"boolean","description":"The order was fully refunded."},"commission_rate":{"type":"number","description":"The host’s commission rate on this order, as a percentage. Your default rate when no override applies."},"commission_amount":{"type":["number","null"],"description":"The host’s commission on this order."},"attribution":{"type":"string","description":"`tracked` when a Rendezvu link or code attributed the order; `manual` when your team matched it by hand."},"host":{"type":["object","null"],"properties":{"id":{"type":"string","description":"The host’s Rendezvu user id (UUID)."},"username":{"type":["string","null"],"description":"The host’s handle, as in rendezvu.co/username."},"first_name":{"type":["string","null"],"description":"First name."},"last_name":{"type":["string","null"],"description":"Last name."},"profile_photo":{"type":["string","null"],"description":"URL of the host’s profile photo."}},"description":"The host the order is attributed to."},"product":{"type":["object","null"],"properties":{"id":{"type":"string","description":"The Rendezvu product id."},"title":{"type":"string","description":"Product title."},"cover_photo":{"type":["string","null"],"description":"Product photo URL."}},"description":"The product the shopper clicked through from, when known."},"gear_list":{"type":["object","null"],"properties":{"id":{"type":"string","description":"The gear list id."},"title":{"type":"string","description":"The list title."}},"description":"The host’s gear list the click came from, when known."},"line_items":{"type":"array","items":{"type":"object","properties":{"title":{"type":["string","null"],"description":"Product title."},"variant_title":{"type":["string","null"],"description":"Size, color or other variant."},"sku":{"type":["string","null"],"description":"Your SKU."},"quantity":{"type":["integer","null"],"description":"Units."},"price":{"type":["number","null"],"description":"Unit price."}}},"description":"What was bought, reduced to product facts. Buyer-entered notes and properties are never included."}}}},"pagination":{"$ref":"#/components/schemas/Pagination"},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":[{"id":"9b8a7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","external_order_id":"5873214560321","order_number":"#10482","order_date":"2026-09-28T15:04:22.000Z","currency":"USD","total_amount":214.98,"subtotal_amount":199,"refund_amount":0,"financial_status":"paid","fulfillment_status":"fulfilled","is_cancelled":false,"is_refunded":false,"commission_rate":12,"commission_amount":23.88,"attribution":"tracked","host":{"id":"6f1c2a9e-3b4d-4e1f-9a8b-2c7d5e6f7a81","username":"jordanalpine","first_name":"Jordan","last_name":"Reyes","profile_photo":"https://media.rendezvu.co/6f1c2a9e_profile.jpg"},"product":{"id":"5c6d7e8f-9a0b-4c1d-8e2f-3a4b5c6d7e8f","title":"Ridgeline 30L Pack","cover_photo":"https://media.rendezvu.co/5c6d7e8f_ridgeline.jpg"},"gear_list":{"id":"a0b1c2d3-e4f5-4a6b-8c7d-8e9f0a1b2c3d","title":"Western States kit"},"line_items":[{"title":"Ridgeline 30L Pack","variant_title":"Slate / M","sku":"RL30-SLT-M","quantity":1,"price":199}]}],"pagination":{"page":1,"per_page":1,"total_items":58,"total_pages":58,"has_next":true,"has_prev":false},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Your plan doesn't include this data, or the subscription is inactive.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/opportunities":{"get":{"operationId":"opportunitiesList","summary":"List opportunities","description":"Your campaigns, newest first, with a count of host assignments in each state.","tags":["opportunities"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/opportunities#list-opportunities"},"security":[{"bearerAuth":["opportunities:read"]}],"x-rendezvu-scope":"opportunities:read","x-rendezvu-plan-feature":null,"parameters":[{"name":"page","in":"query","required":false,"description":"The page to return, starting at 1. At most 10,000.","schema":{"type":"integer","default":"1"}},{"name":"per_page","in":"query","required":false,"description":"Items per page, between 1 and 100.","schema":{"type":"integer","default":"25"}},{"name":"status","in":"query","required":false,"description":"Only campaigns in these states. Comma-separated, case-insensitive: `status=active,completed`.","schema":{"type":"string","description":"Comma-separated.","examples":["DRAFT,READY"]}}],"responses":{"200":{"description":"A page of opportunity objects.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The opportunity id (UUID)."},"title":{"type":"string","description":"Campaign title."},"description":{"type":["string","null"],"description":"The brief hosts read."},"project_details":{"type":["string","null"],"description":"Longer project notes in the brief."},"status":{"type":"string","description":"DRAFT, READY, PROPOSED, ACTIVE, COMPLETED, DECLINED or ARCHIVED."},"listing_type":{"type":["string","null"],"description":"How the campaign is offered to hosts."},"deadline":{"type":["string","null"],"format":"date","description":"When deliverables are due."},"application_deadline":{"type":["string","null"],"format":"date","description":"When applications close."},"target_url":{"type":["string","null"],"description":"Where the campaign sends shoppers."},"payment":{"type":["object","null"],"properties":{"flatFee":{"type":"number","description":"A fixed fee per host."},"commission":{"type":"number","description":"A commission rate, as a percentage."},"bonuses":{"type":"array","items":{},"description":"Bonus terms."},"terms":{"type":"string","description":"Payment terms in prose."},"totalPotential":{"type":"number","description":"The most a host can earn."}},"description":"The compensation terms you wrote. Only these keys are returned, each when set."},"commission_rate":{"type":["number","null"],"description":"The campaign’s commission override, as a percentage."},"content_types":{"type":"array","items":{"type":"string"},"description":"The content you asked for, such as reel or story."},"category":{"type":"array","items":{"type":"string"},"description":"Campaign categories."},"attachments":{"type":"array","items":{"type":"object","properties":{"url":{"type":["string","null"],"description":"File URL."},"filename":{"type":["string","null"],"description":"Original file name."},"mime_type":{"type":["string","null"],"description":"MIME type."},"file_size_bytes":{"type":["integer","null"],"description":"Size in bytes."}}},"description":"Files attached to the brief."},"assignment_counts":{"type":"object","description":"Host assignments by status, such as `{ \"ACTIVE\": 4, \"COMPLETED\": 2 }`. Statuses with none are omitted."},"created_at":{"type":"string","format":"date-time","description":"When the campaign was created."},"updated_at":{"type":"string","format":"date-time","description":"When it last changed."}}}},"pagination":{"$ref":"#/components/schemas/Pagination"},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":[{"id":"8a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d","title":"Fall trail series","description":"Run the Ridgeline 30L on a long day out and show us how you pack it.","project_details":"One reel and three stories per host, posted between October 10 and 24.","status":"ACTIVE","listing_type":null,"deadline":"2026-10-24","application_deadline":null,"target_url":"https://northforkgear.com/products/ridgeline-30","payment":{"flatFee":500,"commission":12,"terms":"Paid on approval of all deliverables."},"commission_rate":12,"content_types":["reel","story"],"category":["trail running"],"attachments":[],"assignment_counts":{"ACTIVE":4,"COMPLETED":2},"created_at":"2026-09-15T18:20:00.000Z","updated_at":"2026-10-02T09:11:43.000Z"}],"pagination":{"page":1,"per_page":1,"total_items":9,"total_pages":9,"has_next":true,"has_prev":false},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/opportunities/{id}":{"get":{"operationId":"opportunitiesRetrieve","summary":"Retrieve an opportunity","description":"One campaign with its deliverables and every host assignment. Internal comments, decline reasons, invite codes and campaign links are not included.","tags":["opportunities"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/opportunities#retrieve-an-opportunity"},"security":[{"bearerAuth":["opportunities:read"]}],"x-rendezvu-scope":"opportunities:read","x-rendezvu-plan-feature":null,"parameters":[{"name":"id","in":"path","required":true,"description":"The opportunity id (UUID).","schema":{"type":"string"}}],"responses":{"200":{"description":"An opportunity object, as in List opportunities, with two more arrays.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"deliverables":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Deliverable id."},"title":{"type":"string","description":"What is due."},"description":{"type":["string","null"],"description":"Detail."},"due_date":{"type":["string","null"],"format":"date","description":"When it is due."},"completed_at":{"type":["string","null"],"format":"date-time","description":"When it was marked done."}}},"description":"What each host owes."},"assignments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Assignment id."},"status":{"type":"string","description":"Where the host is: DRAFT, READY, PROPOSED, ACTIVE, COMPLETED or DECLINED."},"brand_payment_state":{"type":["string","null"],"description":"Your side of the payment: NOT_INVOICED, INVOICED, PAYMENT_PENDING, PAID, FAILED or REFUNDED."},"athlete_payment_state":{"type":["string","null"],"description":"The host’s payout: NOT_EARNED, EARNED, SCHEDULED_FOR_PAYOUT, PAID, ON_HOLD or FAILED."},"accepted_at":{"type":["string","null"],"format":"date-time","description":"When the host accepted."},"declined_at":{"type":["string","null"],"format":"date-time","description":"When the host declined."},"completed_at":{"type":["string","null"],"format":"date-time","description":"When the assignment completed."},"created_at":{"type":"string","format":"date-time","description":"When the host was added."},"updated_at":{"type":"string","format":"date-time","description":"When it last changed."},"host":{"type":["object","null"],"properties":{"id":{"type":"string","description":"The host’s Rendezvu user id (UUID)."},"username":{"type":["string","null"],"description":"The host’s handle, as in rendezvu.co/username."},"first_name":{"type":["string","null"],"description":"First name."},"last_name":{"type":["string","null"],"description":"Last name."},"profile_photo":{"type":["string","null"],"description":"URL of the host’s profile photo."}},"description":"The host’s public identity."}}},"description":"One row per host on the campaign."}}},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":{"id":"8a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d","title":"Fall trail series","status":"ACTIVE","deadline":"2026-10-24","assignment_counts":{"ACTIVE":1},"deliverables":[{"id":"d1e2f3a4-b5c6-4d7e-8f9a-0b1c2d3e4f5a","title":"One Instagram reel","description":"Show the pack on the trail, tag @northforkgear.","due_date":"2026-10-24","completed_at":null}],"assignments":[{"id":"f0e1d2c3-b4a5-4968-8776-655443322110","status":"ACTIVE","brand_payment_state":"PAID","athlete_payment_state":"NOT_EARNED","accepted_at":"2026-09-18T14:02:00.000Z","declined_at":null,"completed_at":null,"created_at":"2026-09-16T10:00:00.000Z","updated_at":"2026-09-18T14:02:00.000Z","host":{"id":"6f1c2a9e-3b4d-4e1f-9a8b-2c7d5e6f7a81","username":"jordanalpine","first_name":"Jordan","last_name":"Reyes","profile_photo":"https://media.rendezvu.co/6f1c2a9e_profile.jpg"}}]},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No opportunity with this id belongs to your brand.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/content":{"get":{"operationId":"contentList","summary":"List content","description":"Files in your content library: deliverables hosts submitted, and files your team uploaded. Items carry a download path rather than a file URL. Files sent in messages are never listed.","tags":["content"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/content#list-content"},"security":[{"bearerAuth":["content:read"]}],"x-rendezvu-scope":"content:read","x-rendezvu-plan-feature":null,"parameters":[{"name":"page","in":"query","required":false,"description":"The page to return, starting at 1. At most 10,000.","schema":{"type":"integer","default":"1"}},{"name":"per_page","in":"query","required":false,"description":"Items per page, between 1 and 100.","schema":{"type":"integer","default":"25"}},{"name":"source","in":"query","required":false,"description":"Where the file came from. Both when omitted.","schema":{"type":"string","description":"Comma-separated.","examples":["deliverable,upload"]}},{"name":"media_type","in":"query","required":false,"description":"Only these kinds of file.","schema":{"type":"string","description":"Comma-separated.","examples":["image,video"]}},{"name":"opportunity_id","in":"query","required":false,"description":"Only content from these campaigns (up to 50 UUIDs).","schema":{"type":"string","description":"Comma-separated."}},{"name":"host_id","in":"query","required":false,"description":"Only content from these hosts (up to 50 UUIDs).","schema":{"type":"string","description":"Comma-separated."}},{"name":"uploaded_after","in":"query","required":false,"description":"Only files added on or after this ISO 8601 date or timestamp.","schema":{"type":"string","format":"date"}},{"name":"uploaded_before","in":"query","required":false,"description":"Only files added before this ISO 8601 date or timestamp.","schema":{"type":"string","format":"date"}},{"name":"sort","in":"query","required":false,"description":"Order by when the file was added.","schema":{"type":"string","enum":["newest","oldest"],"default":"newest"}}],"responses":{"200":{"description":"A page of content items.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The item id."},"source":{"type":"string","description":"`deliverable` or `upload`."},"media_type":{"type":"string","description":"image, video, audio, document or other."},"filename":{"type":["string","null"],"description":"File name."},"mime_type":{"type":["string","null"],"description":"MIME type."},"file_size_bytes":{"type":["integer","null"],"description":"Size in bytes."},"created_at":{"type":"string","format":"date-time","description":"When the file was added."},"uploaded_by":{"type":"string","description":"Who added it, relative to you: `host`, `brand` (your team), or `peer_brand` (another brand on a shared campaign)."},"host":{"type":["object","null"],"properties":{"id":{"type":"string","description":"Host user id."},"username":{"type":["string","null"],"description":"Handle."},"name":{"type":["string","null"],"description":"Display name."}},"description":"The host the file belongs to."},"opportunity":{"type":["object","null"],"properties":{"id":{"type":"string","description":"Opportunity id."},"title":{"type":"string","description":"Campaign title."},"assignment_id":{"type":["string","null"],"description":"The host’s assignment."},"assignment_status":{"type":["string","null"],"description":"Its status."}},"description":"The campaign the file was delivered for."},"deliverable":{"type":["object","null"],"properties":{"id":{"type":"string","description":"Deliverable id."},"title":{"type":"string","description":"What was due."},"due_date":{"type":["string","null"],"format":"date","description":"When it was due."}},"description":"The deliverable the file answers."},"download_path":{"type":"string","description":"The path to call for a download URL. See Retrieve a download URL."}}}},"pagination":{"$ref":"#/components/schemas/Pagination"},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":[{"id":"e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b","source":"deliverable","media_type":"video","filename":"ridgeline-reel-final.mp4","mime_type":"video/mp4","file_size_bytes":48213990,"created_at":"2026-10-03T21:15:08.000Z","uploaded_by":"host","host":{"id":"6f1c2a9e-3b4d-4e1f-9a8b-2c7d5e6f7a81","username":"jordanalpine","name":"Jordan Reyes"},"opportunity":{"id":"8a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d","title":"Fall trail series","assignment_id":"f0e1d2c3-b4a5-4968-8776-655443322110","assignment_status":"ACTIVE"},"deliverable":{"id":"d1e2f3a4-b5c6-4d7e-8f9a-0b1c2d3e4f5a","title":"One Instagram reel","due_date":"2026-10-24"},"download_path":"/api/brand/v1/content/deliverable/e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b/download"}],"pagination":{"page":1,"per_page":1,"total_items":27,"total_pages":27,"has_next":true,"has_prev":false},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/content/{source}/{item_id}/download":{"get":{"operationId":"contentDownload","summary":"Retrieve a download URL","description":"A signed URL for one file, valid for 300 seconds. The response is JSON, not a redirect, so your code decides when to fetch the file. Ask for a new URL each time; do not store one.","tags":["content"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/content#retrieve-a-download-url"},"security":[{"bearerAuth":["content:read"]}],"x-rendezvu-scope":"content:read","x-rendezvu-plan-feature":null,"parameters":[{"name":"source","in":"path","required":true,"description":"The item’s `source`.","schema":{"type":"string","enum":["deliverable","upload"]}},{"name":"item_id","in":"path","required":true,"description":"The item’s `id` (UUID).","schema":{"type":"string"}}],"responses":{"200":{"description":"A short-lived URL and the file’s name and type.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"url":{"type":"string","description":"A signed HTTPS URL for the file."},"expires_in_seconds":{"type":"integer","description":"How long the URL works. Always 300."},"filename":{"type":["string","null"],"description":"File name, for saving."},"mime_type":{"type":["string","null"],"description":"MIME type."}}},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":{"url":"https://rendezvu-files.s3.amazonaws.com/deliverables/ridgeline-reel-final.mp4?X-Amz-Expires=300&X-Amz-Signature=...","expires_in_seconds":300,"filename":"ridgeline-reel-final.mp4","mime_type":"video/mp4"},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No such item in your library, or `source` is not deliverable or upload.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/roster":{"get":{"operationId":"rosterList","summary":"List roster hosts","description":"The hosts you actively work with, with their public profile, commission rate and campaign counts. Your team’s private host tags and notes stay in the console.","tags":["roster"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/roster#list-roster-hosts"},"security":[{"bearerAuth":["roster:read"]}],"x-rendezvu-scope":"roster:read","x-rendezvu-plan-feature":null,"parameters":[{"name":"page","in":"query","required":false,"description":"The page to return, starting at 1. At most 10,000.","schema":{"type":"integer","default":"1"}},{"name":"per_page","in":"query","required":false,"description":"Items per page, between 1 and 100.","schema":{"type":"integer","default":"25"}}],"responses":{"200":{"description":"A page of roster relationships.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"array","items":{"type":"object","properties":{"relationship_id":{"type":"string","description":"The id of your relationship with the host."},"host":{"type":"object","properties":{"id":{"type":"string","description":"The host’s Rendezvu user id (UUID)."},"username":{"type":["string","null"],"description":"The host’s handle, as in rendezvu.co/username."},"first_name":{"type":["string","null"],"description":"First name."},"last_name":{"type":["string","null"],"description":"Last name."},"profile_photo":{"type":["string","null"],"description":"URL of the host’s profile photo."},"title":{"type":["string","null"],"description":"The host’s headline, such as \"Ultrarunner and coach\"."},"intro":{"type":["string","null"],"description":"The host’s public bio."},"discipline":{"type":["string","null"],"description":"Primary discipline, such as trail running."},"specialty":{"type":["string","null"],"description":"Specialty within the discipline."},"location":{"type":["string","null"],"description":"City-level location. Never an address."},"socials":{"type":["object","null"],"description":"Public social links, keyed by network: instagram, tiktok, youtube, strava, website, twitter, facebook, linkedin. Only http(s) URLs the host made public; null when there are none."}},"description":"The host’s public profile."},"status":{"type":"string","description":"The relationship status. Always active here."},"commission_rate":{"type":"number","description":"This host’s commission rate with you, as a percentage. Your default rate when no custom rate is set."},"joined_at":{"type":"string","format":"date-time","description":"When the relationship was created."},"activated_at":{"type":["string","null"],"format":"date-time","description":"When it became active."},"campaigns":{"type":["object","null"],"properties":{"status":{"type":"string","description":"One state per host, highest wins: `active`, `invited`, `completed` or `none`."},"invited":{"type":"integer","description":"Campaigns they were invited to."},"active":{"type":"integer","description":"Campaigns in progress."},"completed":{"type":"integer","description":"Campaigns completed."},"declined":{"type":"integer","description":"Campaigns declined."}},"description":"The host’s campaigns with you, by state."}}}},"pagination":{"$ref":"#/components/schemas/Pagination"},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":[{"relationship_id":"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d","host":{"id":"6f1c2a9e-3b4d-4e1f-9a8b-2c7d5e6f7a81","username":"jordanalpine","first_name":"Jordan","last_name":"Reyes","profile_photo":"https://media.rendezvu.co/6f1c2a9e_profile.jpg","title":"Ultrarunner and coach","intro":"Mountain miles in the Sierra, every season.","discipline":"Trail running","specialty":"Ultramarathon","location":"Truckee, CA","socials":{"instagram":"https://instagram.com/jordanalpine","strava":"https://www.strava.com/athletes/000000"}},"status":"active","commission_rate":12,"joined_at":"2026-04-02T16:30:00.000Z","activated_at":"2026-04-03T09:12:00.000Z","campaigns":{"status":"active","invited":1,"active":1,"completed":3,"declined":0}}],"pagination":{"page":1,"per_page":1,"total_items":37,"total_pages":37,"has_next":true,"has_prev":false},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/recommendations":{"get":{"operationId":"recommendationsList","summary":"List recommendations","description":"Hosts recommending your products on their public gear lists, each with the products, the note they wrote and a host-attributed link. Render it server-side on your site to show who uses your gear.","tags":["recommendations"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/recommendations#list-recommendations"},"security":[{"bearerAuth":["recommendations:read"]}],"x-rendezvu-scope":"recommendations:read","x-rendezvu-plan-feature":null,"parameters":[{"name":"page","in":"query","required":false,"description":"The page to return, starting at 1. At most 10,000.","schema":{"type":"integer","default":"1"}},{"name":"per_page","in":"query","required":false,"description":"Items per page, between 1 and 100.","schema":{"type":"integer","default":"25"}}],"responses":{"200":{"description":"A page of hosts, each with the products of yours they recommend.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"array","items":{"type":"object","properties":{"host":{"type":"object","properties":{"id":{"type":"string","description":"The host’s Rendezvu user id (UUID)."},"username":{"type":["string","null"],"description":"The host’s handle, as in rendezvu.co/username."},"first_name":{"type":["string","null"],"description":"First name."},"last_name":{"type":["string","null"],"description":"Last name."},"profile_photo":{"type":["string","null"],"description":"URL of the host’s profile photo."},"title":{"type":["string","null"],"description":"The host’s headline, such as \"Ultrarunner and coach\"."},"intro":{"type":["string","null"],"description":"The host’s public bio."},"motto":{"type":["string","null"],"description":"The host’s motto."},"discipline":{"type":["string","null"],"description":"Primary discipline, such as trail running."},"specialty":{"type":["string","null"],"description":"Specialty within the discipline."},"location":{"type":["string","null"],"description":"City-level location. Never an address."},"socials":{"type":["object","null"],"description":"Public social links, keyed by network: instagram, tiktok, youtube, strava, website, twitter, facebook, linkedin. Only http(s) URLs the host made public; null when there are none."}},"description":"The host’s public profile."},"product_count":{"type":"integer","description":"How many of your products this host recommends."},"products":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The Rendezvu product id."},"title":{"type":"string","description":"Product title."},"url":{"type":["string","null"],"description":"The canonical product page on your store."},"photo_url":{"type":["string","null"],"description":"Product photo."},"price_min":{"type":["number","null"],"description":"Lowest variant price."},"price_max":{"type":["number","null"],"description":"Highest variant price."},"host_note":{"type":["string","null"],"description":"Why the host recommends it, in their words."},"variant_note":{"type":["string","null"],"description":"The size or color the host uses."},"code":{"type":["string","null"],"description":"The product’s Rendezvu short code."},"link":{"type":["string","null"],"description":"A link that credits the host for the sale. Use it in place of `url` when present."}}},"description":"The products, as the host listed them."}}}},"pagination":{"$ref":"#/components/schemas/Pagination"},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":[{"host":{"id":"6f1c2a9e-3b4d-4e1f-9a8b-2c7d5e6f7a81","username":"jordanalpine","first_name":"Jordan","last_name":"Reyes","profile_photo":"https://media.rendezvu.co/6f1c2a9e_profile.jpg","title":"Ultrarunner and coach","intro":"Mountain miles in the Sierra, every season.","motto":"Start slow, finish strong.","discipline":"Trail running","specialty":"Ultramarathon","location":"Truckee, CA","socials":{"instagram":"https://instagram.com/jordanalpine"}},"product_count":1,"products":[{"id":"5c6d7e8f-9a0b-4c1d-8e2f-3a4b5c6d7e8f","title":"Ridgeline 30L Pack","url":"https://northforkgear.com/products/ridgeline-30","photo_url":"https://media.rendezvu.co/5c6d7e8f_ridgeline.jpg","price_min":199,"price_max":199,"host_note":"Carries everything for a 50K with room for a shell.","variant_note":"Slate, size M","code":"k3x9","link":"https://www.rendezvu.co/p-k3x9?h=jordanalpine"}]}],"pagination":{"page":1,"per_page":1,"total_items":14,"total_pages":14,"has_next":true,"has_prev":false},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/gifts":{"get":{"operationId":"giftsList","summary":"List gifts","description":"Product gifts you sent to hosts, newest first: where each one stands, the store order behind it, and the feedback the host wrote. Shipping addresses, phone numbers and tracking numbers are never returned.","tags":["gifts"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/gifts#list-gifts"},"security":[{"bearerAuth":["gifts:read"]}],"x-rendezvu-scope":"gifts:read","x-rendezvu-plan-feature":"Gifting","parameters":[{"name":"page","in":"query","required":false,"description":"The page to return, starting at 1. At most 10,000.","schema":{"type":"integer","default":"1"}},{"name":"per_page","in":"query","required":false,"description":"Items per page, between 1 and 100.","schema":{"type":"integer","default":"25"}},{"name":"status","in":"query","required":false,"description":"Only gifts in this state. Archived gifts are returned only when you ask for ARCHIVED.","schema":{"type":"string","enum":["DRAFT","PENDING","ACCEPTED","SHIPPED","COMPLETE","ARCHIVED"]}}],"responses":{"200":{"description":"A page of gifts.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The gift id."},"status":{"type":"string","description":"DRAFT, PENDING, ACCEPTED, SHIPPED, COMPLETE or ARCHIVED."},"product":{"type":"object","properties":{"name":{"type":"string","description":"Product name."},"description":{"type":["string","null"],"description":"Product description."},"url":{"type":["string","null"],"description":"Product page."}},"description":"What you sent."},"host":{"type":["object","null"],"properties":{"id":{"type":"string","description":"The host’s Rendezvu user id (UUID)."},"username":{"type":["string","null"],"description":"The host’s handle, as in rendezvu.co/username."},"first_name":{"type":["string","null"],"description":"First name."},"last_name":{"type":["string","null"],"description":"Last name."},"profile_photo":{"type":["string","null"],"description":"URL of the host’s profile photo."}},"description":"Who you sent it to."},"opportunity":{"type":["object","null"],"properties":{"id":{"type":"string","description":"Opportunity id."},"title":{"type":["string","null"],"description":"Campaign title."}},"description":"The campaign the gift belongs to, if any."},"shipment":{"type":"object","properties":{"store_order_state":{"type":["string","null"],"description":"not_applicable, needs_variant, queued, draft_created, placed, fulfilled, failed or cancelled."},"store_order_name":{"type":["string","null"],"description":"The order name in your store."},"store_order_placed_at":{"type":["string","null"],"format":"date-time","description":"When the order was placed."}},"description":"The store order Rendezvu placed for the gift, when there is one."},"feedback":{"type":["string","null"],"description":"The host’s review of the product, written to you."},"feedback_submitted_at":{"type":["string","null"],"format":"date-time","description":"When the host wrote it."},"created_at":{"type":"string","format":"date-time","description":"When the gift was created."},"accepted_at":{"type":["string","null"],"format":"date-time","description":"When the host accepted."},"shipped_at":{"type":["string","null"],"format":"date-time","description":"When it shipped."},"completed_at":{"type":["string","null"],"format":"date-time","description":"When it was marked complete."},"archived_at":{"type":["string","null"],"format":"date-time","description":"When it was archived."}}}},"pagination":{"$ref":"#/components/schemas/Pagination"},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":[{"id":"2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e","status":"SHIPPED","product":{"name":"Ridgeline 30L Pack","description":"A 30 liter fastpack for long days.","url":"https://northforkgear.com/products/ridgeline-30"},"host":{"id":"b2e4d6f8-1a3c-4e5f-8b7d-9c0e1f2a3b4c","username":"sam.on.granite","first_name":"Sam","last_name":"Okafor","profile_photo":null},"opportunity":{"id":"8a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d","title":"Fall trail series"},"shipment":{"store_order_state":"placed","store_order_name":"#10477","store_order_placed_at":"2026-09-20T13:00:00.000Z"},"feedback":null,"feedback_submitted_at":null,"created_at":"2026-09-19T08:45:00.000Z","accepted_at":"2026-09-19T19:02:00.000Z","shipped_at":"2026-09-21T15:30:00.000Z","completed_at":null,"archived_at":null}],"pagination":{"page":1,"per_page":1,"total_items":6,"total_pages":6,"has_next":true,"has_prev":false},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Your plan doesn't include this data, or the subscription is inactive.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/codes":{"get":{"operationId":"codesList","summary":"List discount codes","description":"The discount codes your hosts share, and whether each one is synced to your store.","tags":["codes"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/discount-codes#list-discount-codes"},"security":[{"bearerAuth":["codes:read"]}],"x-rendezvu-scope":"codes:read","x-rendezvu-plan-feature":"Discount codes","parameters":[{"name":"page","in":"query","required":false,"description":"The page to return, starting at 1. At most 10,000.","schema":{"type":"integer","default":"1"}},{"name":"per_page","in":"query","required":false,"description":"Items per page, between 1 and 100.","schema":{"type":"integer","default":"25"}},{"name":"search","in":"query","required":false,"description":"Match on the code or the host, 1 to 100 characters.","schema":{"type":"string"}},{"name":"include_inactive","in":"query","required":false,"description":"Include codes that are switched off. `true` or `false`.","schema":{"type":"boolean","default":"false"}}],"responses":{"200":{"description":"A page of codes.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The code id."},"code":{"type":"string","description":"What shoppers type at checkout."},"discount_type":{"type":["string","null"],"description":"`percent` or `amount`."},"discount_value":{"type":["number","null"],"description":"The discount: 15 means 15% or 15 in your currency, by `discount_type`."},"active":{"type":"boolean","description":"Shoppers can use it."},"synced_to_store":{"type":"boolean","description":"The code exists as a discount in your store."},"host":{"type":"object","properties":{"id":{"type":"string","description":"The host’s Rendezvu user id (UUID)."},"username":{"type":["string","null"],"description":"The host’s handle, as in rendezvu.co/username."},"first_name":{"type":["string","null"],"description":"First name."},"last_name":{"type":["string","null"],"description":"Last name."}},"description":"The host the code credits."},"created_at":{"type":"string","format":"date-time","description":"When the code was created."},"updated_at":{"type":"string","format":"date-time","description":"When it last changed."}}}},"pagination":{"$ref":"#/components/schemas/Pagination"},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":[{"id":"4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a","code":"JORDAN15","discount_type":"percent","discount_value":15,"active":true,"synced_to_store":true,"host":{"id":"6f1c2a9e-3b4d-4e1f-9a8b-2c7d5e6f7a81","username":"jordanalpine","first_name":"Jordan","last_name":"Reyes"},"created_at":"2026-05-11T12:00:00.000Z","updated_at":"2026-05-11T12:00:00.000Z"}],"pagination":{"page":1,"per_page":1,"total_items":22,"total_pages":22,"has_next":true,"has_prev":false},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Your plan doesn't include this data, or the subscription is inactive.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/surveys":{"get":{"operationId":"surveysList","summary":"List surveys","description":"Your surveys, with how many responses each has collected.","tags":["surveys"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/surveys#list-surveys"},"security":[{"bearerAuth":["surveys:read"]}],"x-rendezvu-scope":"surveys:read","x-rendezvu-plan-feature":"Surveys","parameters":[{"name":"page","in":"query","required":false,"description":"The page to return, starting at 1. At most 10,000.","schema":{"type":"integer","default":"1"}},{"name":"per_page","in":"query","required":false,"description":"Items per page, between 1 and 100.","schema":{"type":"integer","default":"25"}},{"name":"status","in":"query","required":false,"description":"Only surveys in this state.","schema":{"type":"string","enum":["DRAFT","PUBLISHED","CLOSED"]}}],"responses":{"200":{"description":"A page of surveys.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The survey id."},"title":{"type":"string","description":"Survey title."},"description":{"type":["string","null"],"description":"What respondents read first."},"visibility":{"type":"string","description":"`PRIVATE` (invited hosts) or `PUBLIC` (anyone with the link)."},"status":{"type":"string","description":"DRAFT, PUBLISHED or CLOSED."},"response_count":{"type":"integer","description":"Responses so far."},"published_at":{"type":["string","null"],"format":"date-time","description":"When it opened."},"closed_at":{"type":["string","null"],"format":"date-time","description":"When it closed."},"created_at":{"type":"string","format":"date-time","description":"When it was created."},"updated_at":{"type":"string","format":"date-time","description":"When it last changed."}}}},"pagination":{"$ref":"#/components/schemas/Pagination"},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":[{"id":"c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f","title":"Ridgeline 30L field test","description":"Five questions after your first month with the pack.","visibility":"PRIVATE","status":"PUBLISHED","response_count":18,"published_at":"2026-09-01T16:00:00.000Z","closed_at":null,"created_at":"2026-08-28T10:30:00.000Z","updated_at":"2026-09-01T16:00:00.000Z"}],"pagination":{"page":1,"per_page":25,"total_items":1,"total_pages":1,"has_next":false,"has_prev":false},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Your plan doesn't include this data, or the subscription is inactive.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/surveys/{id}/results":{"get":{"operationId":"surveysResults","summary":"Retrieve survey results","description":"Aggregate results for one survey, question by question. Individual responses, respondent names and emails are never returned, and free-text questions report a count of answers without the text.","tags":["surveys"],"externalDocs":{"url":"https://www.rendezvu.co/docs/api/surveys#retrieve-survey-results"},"security":[{"bearerAuth":["surveys:read"]}],"x-rendezvu-scope":"surveys:read","x-rendezvu-plan-feature":"Surveys","parameters":[{"name":"id","in":"path","required":true,"description":"The survey id (UUID).","schema":{"type":"string"}}],"responses":{"200":{"description":"Totals for the survey and a result per question.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","properties":{"survey_id":{"type":"string","description":"The survey id."},"total_responses":{"type":"integer","description":"Responses collected."},"questions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Question id."},"type":{"type":"string","description":"MULTIPLE_CHOICE, FREE_TEXT, RATING, YES_NO or DROPDOWN."},"title":{"type":"string","description":"The question."},"position":{"type":"integer","description":"Its place in the survey."},"total_answers":{"type":"integer","description":"How many respondents answered it."},"options":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Option id."},"label":{"type":"string","description":"Option text."},"count":{"type":"integer","description":"Respondents who chose it."},"pct":{"type":"number","description":"Share of answers, as a percentage."}}},"description":"For choice questions: each option with its count. Absent for other types."},"rating":{"type":"object","properties":{"average":{"type":"number","description":"Mean rating."},"distribution":{"type":"array","items":{"type":"object"},"description":"Each rating with its count: `{ rating, count }`."}},"description":"For rating questions: the average and the distribution. Absent for other types."}}},"description":"One result per question, in survey order."}}},"_timing":{"$ref":"#/components/schemas/Timing"}}},"example":{"success":true,"data":{"survey_id":"c7d8e9f0-1a2b-4c3d-8e4f-5a6b7c8d9e0f","total_responses":18,"questions":[{"id":"7e8f9a0b-1c2d-4e3f-8a4b-5c6d7e8f9a0b","type":"RATING","title":"How comfortable is the pack after 3 hours?","position":1,"total_answers":18,"rating":{"average":4.4,"distribution":[{"rating":3,"count":2},{"rating":4,"count":6},{"rating":5,"count":10}]}},{"id":"9a0b1c2d-3e4f-4a5b-8c6d-7e8f9a0b1c2d","type":"FREE_TEXT","title":"What would you change?","position":2,"total_answers":15}]},"_timing":{"duration_ms":42}}}}},"400":{"description":"A query parameter is unknown or invalid, or the key was sent in the URL or an x-api-key header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The key is missing, malformed, unknown, expired or revoked. The response carries WWW-Authenticate: Bearer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Your plan doesn't include this data, or the subscription is inactive.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key lacks the endpoint's scope, or the request came from an IP outside the key's allowlist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No survey with this id belongs to your brand.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the IP address is over its per-minute limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Something went wrong on our side. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Authentication, the plan check or the audit log is briefly unavailable. Retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"A secret key beginning rdz_sk_. Create one in the Rendezvu console under Settings, Integrations, Brand API."}},"schemas":{"Pagination":{"type":"object","properties":{"page":{"type":"integer"},"per_page":{"type":"integer"},"total_items":{"type":"integer"},"total_pages":{"type":"integer"},"has_next":{"type":"boolean"},"has_prev":{"type":"boolean"}}},"Timing":{"type":"object","properties":{"duration_ms":{"type":"integer"}}},"Error":{"type":"object","required":["success","message"],"properties":{"success":{"type":"boolean","const":false},"message":{"type":"string"}}},"RateLimitError":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"retryAfter":{"type":"integer","description":"Seconds until the window resets."}}}}}}