{"openapi":"3.1.0","info":{"title":"HighLevel (BYOK) API","version":"0.1.0","description":"HighLevel (BYOK) lets an AI assistant read your own HighLevel data through the HighLevel API with a key you supply (HighLevel private integration token (read scopes)). Read-only: 11 tools (list_campaigns, list_workflows, list_forms, list_form_submissions, list_blogs, list_blog_posts, list_pipelines, search_opportunities, list_contacts, get_contact, list_social_accounts). The BYOK key travels with...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-gohighlevel.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-gohighlevel/docs"},"termsOfService":"https://connectorbay.com/byok-gohighlevel/terms"},"servers":[{"url":"https://byok-gohighlevel.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-gohighlevel/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_campaigns":{"post":{"operationId":"list_campaigns","summary":"List the email campaigns of a sub-account with status, optionally only one status such as draft. Use for \"Which HighLeve","description":"List the email campaigns of a sub-account with status, optionally only one status such as draft. Use for \"Which HighLevel campaigns do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"HighLevel sub-account (location) id, for example 've9EPM428h8vShlRW1KT'; shown in the sub-account settings.","maxLength":40,"title":"Location Id","type":"string"},"status":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only campaigns in this status, for example draft, active or complete.","title":"Status"}},"required":["location_id"],"title":"list_campaignsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_workflows":{"post":{"operationId":"list_workflows","summary":"List the automation workflows of a sub-account with status, version and last update time. Use for \"Which automations are","description":"List the automation workflows of a sub-account with status, version and last update time. Use for \"Which automations are set up in my HighLevel account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"HighLevel sub-account (location) id, for example 've9EPM428h8vShlRW1KT'; shown in the sub-account settings.","maxLength":40,"title":"Location Id","type":"string"}},"required":["location_id"],"title":"list_workflowsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_forms":{"post":{"operationId":"list_forms","summary":"List the forms of a sub-account (page with skip and limit, at most 50 per call). Use for \"Which forms do I have in HighL","description":"List the forms of a sub-account (page with skip and limit, at most 50 per call). Use for \"Which forms do I have in HighLevel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"HighLevel sub-account (location) id, for example 've9EPM428h8vShlRW1KT'; shown in the sub-account settings.","maxLength":40,"title":"Location Id","type":"string"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many forms to skip (default 0).","title":"Skip"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many forms to return (1 to 50, default 10).","title":"Limit"}},"required":["location_id"],"title":"list_formsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_form_submissions":{"post":{"operationId":"list_form_submissions","summary":"List form submissions of a sub-account with contact, form, name, email and time; filter by form, text and dates. Use for","description":"List form submissions of a sub-account with contact, form, name, email and time; filter by form, text and dates. Use for \"Who submitted forms in HighLevel this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"HighLevel sub-account (location) id, for example 've9EPM428h8vShlRW1KT'; shown in the sub-account settings.","maxLength":40,"title":"Location Id","type":"string"},"form_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only submissions of this form id (from list_forms).","title":"Form Id"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Filter by contact id, name, email or phone number.","title":"Search"},"start_at":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Earliest submission date, YYYY-MM-DD (default one month ago).","title":"Start At"},"end_at":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Latest submission date, YYYY-MM-DD (default today).","title":"End At"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many submissions per page (1 to 100, default 20).","title":"Limit"}},"required":["location_id"],"title":"list_form_submissionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_blogs":{"post":{"operationId":"list_blogs","summary":"List the blog sites of a sub-account; the id is needed to list posts. Use for \"Which blogs does my HighLevel account hos","description":"List the blog sites of a sub-account; the id is needed to list posts. Use for \"Which blogs does my HighLevel account host\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"HighLevel sub-account (location) id, for example 've9EPM428h8vShlRW1KT'; shown in the sub-account settings.","maxLength":40,"title":"Location Id","type":"string"},"skip":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many blogs to skip (default 0).","title":"Skip"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many blogs to return (default 10).","title":"Limit"},"search_term":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only blogs whose name matches this text.","title":"Search Term"}},"required":["location_id"],"title":"list_blogsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_blog_posts":{"post":{"operationId":"list_blog_posts","summary":"List the posts of one blog with title, status, author, slug, categories, tags and publish time. Use for \"What blog posts","description":"List the posts of one blog with title, status, author, slug, categories, tags and publish time. Use for \"What blog posts are published on my HighLevel blog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"HighLevel sub-account (location) id, for example 've9EPM428h8vShlRW1KT'; shown in the sub-account settings.","maxLength":40,"title":"Location Id","type":"string"},"blog_id":{"description":"Blog id from list_blogs.","maxLength":40,"title":"Blog Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many posts to return (default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many posts to skip (default 0).","title":"Offset"},"search_term":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only posts whose title matches this text.","title":"Search Term"},"status":{"anyOf":[{"enum":["PUBLISHED","SCHEDULED","ARCHIVED","DRAFT"],"type":"string"},{"type":"null"}],"default":null,"description":"Only posts in this status.","title":"Status"}},"required":["location_id","blog_id"],"title":"list_blog_postsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_pipelines":{"post":{"operationId":"list_pipelines","summary":"List the sales pipelines of a sub-account with their stages. Use for \"Which sales pipelines and stages exist in HighLeve","description":"List the sales pipelines of a sub-account with their stages. Use for \"Which sales pipelines and stages exist in HighLevel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"HighLevel sub-account (location) id, for example 've9EPM428h8vShlRW1KT'; shown in the sub-account settings.","maxLength":40,"title":"Location Id","type":"string"}},"required":["location_id"],"title":"list_pipelinesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_opportunities":{"post":{"operationId":"search_opportunities","summary":"Search opportunities (deals) of a sub-account by text, pipeline, stage, status, contact or campaign, with value and sour","description":"Search opportunities (deals) of a sub-account by text, pipeline, stage, status, contact or campaign, with value and source. Use for \"Which open HighLevel opportunities are in my sales pipeline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"HighLevel sub-account (location) id.","maxLength":40,"title":"Location Id","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text such as a contact name or email.","title":"Search"},"pipeline_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only this pipeline id (from list_pipelines).","title":"Pipeline Id"},"pipeline_stage_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only this stage id.","title":"Pipeline Stage Id"},"contact_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only opportunities of this contact id.","title":"Contact Id"},"status":{"anyOf":[{"enum":["open","won","lost","abandoned","all"],"type":"string"},{"type":"null"}],"default":null,"description":"Status filter: open, won, lost, abandoned or all.","title":"Status"},"campaign_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only opportunities tied to this campaign id.","title":"Campaign Id"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 100, default 20).","title":"Limit"}},"required":["location_id"],"title":"search_opportunitiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_contacts":{"post":{"operationId":"list_contacts","summary":"List contacts of a sub-account with email, source, tags and date added; search with query and page with start_after_id. ","description":"List contacts of a sub-account with email, source, tags and date added; search with query and page with start_after_id. Use for \"Who are my newest HighLevel contacts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"HighLevel sub-account (location) id, for example 've9EPM428h8vShlRW1KT'; shown in the sub-account settings.","maxLength":40,"title":"Location Id","type":"string"},"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search contacts by, such as a name or email.","title":"Query"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many contacts to return (1 to 100, default 20).","title":"Limit"},"start_after_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: id of the last contact of the previous page.","title":"Start After Id"},"start_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Paging cursor: timestamp of the last contact of the previous page.","title":"Start After"}},"required":["location_id"],"title":"list_contactsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_contact":{"post":{"operationId":"get_contact","summary":"Get one contact: name, email, phone, company, source, tags, dates and marketing attribution (campaign and UTM fields). U","description":"Get one contact: name, email, phone, company, source, tags, dates and marketing attribution (campaign and UTM fields). Use for \"Show HighLevel contact ocQHyuzHvysMo5N5VsXc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"contact_id":{"description":"HighLevel contact id, from list_contacts.","maxLength":40,"title":"Contact Id","type":"string"}},"required":["contact_id"],"title":"get_contactArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_social_accounts":{"post":{"operationId":"list_social_accounts","summary":"List the social media accounts connected to a sub-account's social planner. Use for \"Which social accounts are connected","description":"List the social media accounts connected to a sub-account's social planner. Use for \"Which social accounts are connected in HighLevel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"HighLevel sub-account (location) id.","maxLength":40,"title":"Location Id","type":"string"}},"required":["location_id"],"title":"list_social_accountsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}