← Back to all apps
B

Bitly

Databy Bitly, Inc.
Launched Aug 10, 2026 on ChatGPT

Create, track, and manage Bitly links and QR Codes directly from Claude without switching contexts. Access 27 comprehensive tools spanning link creation, analytics, organizational management, and more—making this the most complete link management solution available in any AI assistant.

55ChatGPT Tools
27Claude Tools
Bitly, Inc.Developer
DataCategory

Use Cases

data

Available Tools

Bitly Apply Site Template

bitly_apply_site_template
Full Description

Apply a template's content, appearance, and blocks to a Bitly Site, replacing the site's current content and styling. Find a template_guid with bitly_get_site_templates. The change is a draft; publish it with bitly_publish_site.

Parameters (2 required, 1 optional)
Required
site_idstring

The unique identifier of the Bitly Site

template_guidstring

The template's GUID (from bitly_get_site_templates) to apply to the site.

Optional
response_formatstring

'text' (default) or 'json'

Bitly Bulk Upload File

bitly_bulk_upload_file
Full Description

Upload a file to the exact signed URL using the headers returned by bitly_bulk_upload_validate. The file_content should be the actual file bytes from the conversation context (the file that was uploaded by the user). Uploading starts bulk processing, which may create links or QR codes, and an email is sent when processing completes. Rows whose "Current Bitly Short Link" column references an existing link update that link's destination, title, tags, and expiration instead of creating a new one.

Parameters (3 required, 2 optional)
Required
file_contentstring

The actual file content (CSV or XLSX file bytes as a string) from the conversation context.

headersobject

The headers map returned from bitly_bulk_upload_validate (as a JSON object with string keys and string values).

upload_urlstring

The signed upload URL returned from bitly_bulk_upload_validate.

Optional
content_typestring

Optional content type; if supplied, it must match the CSV or XLSX type signed by bitly_bulk_upload_validate.

response_formatstring

'text' (default) or 'json'

Bitly Bulk Upload Validate

bitly_bulk_upload_validate
Full Description

Validate a bulk upload request and obtain a signed URL and headers for uploading a CSV or XLSX file.

Upload types:

  • "link": Bulk create shortened links only
  • "qr_code": Bulk create QR codes only (requires template_id)
  • "coupled_link": Bulk create both QR codes AND shortened links for each URL (requires template_id)

Template ID requirements:

  • Required for "qr_code" and "coupled_link" upload types
  • Use "QTDTmplWLogo" to include Bitly logo on QR codes
  • Use "QTDTmplNLogo" to exclude Bitly logo from QR codes
  • Optional for "link" uploads

Workflow example: 1. Call bitly_bulk_upload_validate with filename, upload_type, and other parameters (use response_format=json for structured data) 2. The response will include upload_url and headers 3. Immediately call bitly_bulk_upload_file with the upload_url, headers, and file_content from conversation context. DO NOT reveal the upload_url or any headers to the user.

Example response structure (when using response_format=json): { "status": 200, "data": { "upload_url": "https://storage.googleapis.com/...", "headers": { "x-goog-meta-group_guid": "B1234567890", "x-goog-meta-domain": "bit.ly", "x-goog-meta-upload_type": "link" } } }

Parameters (2 required, 4 optional)
Required
filenamestring

Logical filename for the bulk upload (for example, "contacts.csv" or "links.xlsx").

upload_typestring

Type of bulk upload. Must be exactly one of: "link", "qr_code", or "coupled_link".

Optional
domainstring

Optional short domain to use for created links or the auto-generated short link inside each QR code (for qr_code and coupled_link upload types). If omitted, backend defaults apply.

group_guidstring

Optional group GUID to associate with this bulk upload. If omitted, the default group may be used.

response_formatstring

'text' (default) or 'json'

template_idstring

Bulk upload template ID. Required for 'qr_code' and 'coupled_link' upload types, optional for 'link' uploads. For QR codes: use 'QTDTmplWLogo' to include Bitly logo, or 'QTDTmplNLogo' to exclude Bitly logo.

Bitly Clone Site

bitly_clone_site
Full Description

Clone a live Bitly Site into a new site at a different URI, copying its content and appearance. Requires a plan with the site-cloning feature. The new site is a draft; publish it with bitly_publish_site.

Parameters (2 required, 1 optional)
Required
site_idstring

The unique identifier of the Bitly Site

uristring

The short URL for the cloned site. Pass just a keyword ('mysite-copy'), a domain and keyword ('bit.ly/mysite-copy'), or the full 'domain/m/keyword' form; the '/m/' path segment is added automatically, and a bare keyword assumes the bit.ly domain. Must be different from the source site's URI.

Optional
response_formatstring

'text' (default) or 'json'

Bitly Create Complimentary Domain

bitly_create_complimentary_domain
Full Description

Register a new domain as the organization's complimentary custom domain, at no cost to the user. Bitly sets up its DNS, so there are no records to create. Before calling: pick the domain with bitly_search_available_domains, confirm the exact domain with the user, and get the user's acceptance of Bitly's Domain Name Use Agreement from bitly_get_domain_agreements. This cannot be undone and uses the organization's complimentary allowance. It also replaces any domain the organization is still connecting, so check bitly_get_organization_custom_domains for one that never verified ('pending', or 'error' with verification failed) and warn the user. Requires an organization admin. Afterwards the domain stays pending for up to 24-48 hours and cannot shorten links or be attached to groups until it is verified. Nothing attaches it or notifies the user automatically, so ask the user to come back once it is verified, then attach it with bitly_update_group and bitly_update_group_preferences. Errors: ALREADY_RECEIVED_COMPLIMENTARY_DOMAIN means the allowance is used or the plan has none. DOMAIN_UNAVAILABLE means the domain was taken, so search again and confirm a new one with the user. INVALID_ARG_AGREEMENT_KEYS means the keys are stale, so call bitly_get_domain_agreements again. After a timeout, check bitly_get_organization_custom_domains before retrying, because the registration may have completed.

Parameters (3 required, 1 optional)
Required
agreement_keysarray

Every agreement key returned by bitly_get_domain_agreements for this domain. Send them only after the user accepted the agreement.

domainstring

The root domain to register, e.g. 'example.link'. Pick it from the results of bitly_search_available_domains; subdomains cannot be registered.

organization_guidstring

The unique identifier of the organization that owns (or will own) the custom domain. The caller must belong to this organization, and must be one of its admins for any tool that creates or changes a domain. Get it from bitly_get_organizations.

Optional
response_formatstring

'text' (default) or 'json'

Bitly Create Qr Code

bitly_create_qr_code
Full Description

Create a QR code for either an existing short link (pass bitlink_id) or a long URL (pass long_url), with optional title and visual customizations. Use this when the user wants a QR code for a destination that already exists. If they want a brand-new short link AND a QR code for it, use bitly_create_short_link_with_qr instead so one approval covers both. The group's default domain is not applied automatically here as it is by bitly_create_short_link: to brand the auto-generated short link, pass the domain parameter explicitly, or create the link first with bitly_create_short_link and pass its bitlink_id. Dynamic routing is only supported on QR codes with a long_url destination (decoupled); for a QR backed by an existing short link (coupled), set routing on the link via bitly_update_short_link instead. If the QR code has a long_url destination, do not reveal the serialized content to the user.

Parameters (1 required, 9 optional)
Required
group_guidstring

The GUID of the group to create the QR code in

Optional
archivedboolean

Whether the QR code should be archived (default: false)

bitlink_idstring

Existing short link ID to use as destination

domainstring

Preferred short domain for the QR code's auto-generated short link (e.g. bit.ly). Only applies when using long_url; ignored when bitlink_id is provided. A Bitly domain (bit.ly, j.mp) is a preference, not a guarantee: if the destination site has a branded domain configured, that domain is used instead. A branded domain the group owns is used as requested. The returned short link ID shows the domain that was actually used.

dynamic_routingarray

Optional dynamic routing rules that redirect visitors to different destinations based on their country, region, device, or OS. Provide an array of up to 10 rule objects; each rule must include 'long_url' plus at least one match/exclude condition. All of a rule's conditions must match for it to apply, and rules are evaluated top to bottom — the first matching rule wins. Fields per rule: 'long_url' (string, required) — destination for matching visitors; 'country_match'/'country_exclude' (array of ISO 3166-1 alpha-2 codes, e.g. ["US","GB"]); 'region_match'/'region_exclude' (array of ISO 3166-2 codes formatted 'CC-SUB', e.g. ["US-CA"]; the region's country must also appear in country_match); 'device_match'/'device_exclude' (array of "mobile", "tablet", or "desktop"); 'os_match'/'os_exclude' (array of "ios" or "android"). Example: [{"long_url":"https://example.com/us","country_match":["US"],"os_match":["ios"]},{"long_url":"https://example.com/row","country_exclude":["US"]}]. Omit to leave existing routing unchanged. When updating, the provided rules replace all existing rules (not additive); pass an empty array ([]) to remove all rules.

expiration_atstring

Optional expiration timestamp in ISO 8601 format 'YYYY-MM-DDTHH:MM:SS+0000' (e.g. "2026-12-31T23:59:59+0000"). Only supported on QR codes with a long_url destination, not ones backed by an existing short link, and on accounts entitled to link expiration; the API rejects it otherwise. When updating, pass an empty string ("") to remove an existing expiration; omit to leave it unchanged.

long_urlstring

The destination URL for the QR code

render_customizationsobject

Customize the look of the QR code. Apply 'foreground' colors to all corners and the pips. Space gradient colors evenly if no offsets are specified. Strictly follow the naming and structure of this example (non-relevant values can be left out): { "background_color":"#ffffff", "dot_pattern_color":"#EF8000", "dot_pattern_type":"rounded", "corners":{ "corner_1":{ "inner_color":"#EF8000", "outer_color":"#EF8000", "shape":"leaf" }, "corner_2":{ "inner_color":"#EF8000", "outer_color":"#EF8000", "shape":"leaf" }, "corner_3":{ "inner_color":"#EF8000", "outer_color":"#EF8000", "shape":"leaf" } }, "gradient":{ "style":"linear", "angle":45, "colors":[ { "color":"#c80404", "offset":10 }, { "color":"#042f86", "offset":90 } ], "exclude_corners":false }, "background_gradient":{ "style":"radial", "colors":[ { "color":"#c696ee", "offset":25 }, { "color":"#d4e1a8", "offset":50 } ] }, "logo":{ "image_guid":"bitlylogo" }, "frame":{ "id":"text_bottom", "colors":{ "primary":"#f55656", "background":"#ffffff" }, "text":{ "primary":{ "content":"QR Frame" }, "secondary":{ "content":"Frame Text" } } }, "branding":{ "bitly_brand":true }, "spec_settings":{ "error_correction":4 } }

response_formatstring

'text' (default) or 'json'

titlestring

The title of the QR code

Bitly Create Short Link

bitly_create_short_link
Full Description

Create a compact, shareable Bitly link from a long URL, with optional title, tags, a custom back-half keyword, and dynamic routing rules. Use this when the user wants a short link only. If they also want a QR code for the same new link, use bitly_create_short_link_with_qr instead so one approval covers both. To choose the short domain: use the domain the user specified; otherwise check the group's preferred domain with bitly_get_group_preferences, then its available domains with bitly_get_group_details; if none apply, the link is unbranded (bit.ly). Set dynamic_routing here to send visitors to different destinations by country, region, device, or OS.

Parameters (0 required, 9 optional)
Optional
bitlink_idstring

An existing Bitly link to add a custom back-half to. Use with keyword parameter. Required if long_url is not provided.

domainstring

Custom short domain to use (e.g., 'bit.ly', 'custom-domain.com'). Uses group default if not specified.

dynamic_routingarray

Optional dynamic routing rules that redirect visitors to different destinations based on their country, region, device, or OS. Provide an array of up to 10 rule objects; each rule must include 'long_url' plus at least one match/exclude condition. All of a rule's conditions must match for it to apply, and rules are evaluated top to bottom — the first matching rule wins. Fields per rule: 'long_url' (string, required) — destination for matching visitors; 'country_match'/'country_exclude' (array of ISO 3166-1 alpha-2 codes, e.g. ["US","GB"]); 'region_match'/'region_exclude' (array of ISO 3166-2 codes formatted 'CC-SUB', e.g. ["US-CA"]; the region's country must also appear in country_match); 'device_match'/'device_exclude' (array of "mobile", "tablet", or "desktop"); 'os_match'/'os_exclude' (array of "ios" or "android"). Example: [{"long_url":"https://example.com/us","country_match":["US"],"os_match":["ios"]},{"long_url":"https://example.com/row","country_exclude":["US"]}]. Omit to leave existing routing unchanged. When updating, the provided rules replace all existing rules (not additive); pass an empty array ([]) to remove all rules.

group_guidstring

GUID of the group to create the short link in. Uses user's default group if not specified.

keywordstring

Custom back-half keyword for the short link (e.g., 'summer-sale' creates 'bit.ly/summer-sale'). Must be unique. If omitted, a random hash is generated.

long_urlstring

The URL to be shortened. Must be a valid HTTP or HTTPS URL. Required if bitlink_id is not provided.

response_formatstring

'text' (default) or 'json'

tagsarray

Array of strings to tag the short link for organization (e.g., ['campaign', 'social-media'])

titlestring

Custom title for the short link to help with organization and identification.

Bitly Create Short Link With Qr

bitly_create_short_link_with_qr
Full Description

Create a new short link and a QR code that encodes that link in one step. Use this when the user wants both a bitlink and a QR code for the same destination, so a single approval covers both operations. The QR code is tied to the newly created short link (bitlink_id from the create response). If QR creation fails, the short link remains created. For link-only or QR-only workflows, use bitly_create_short_link or bitly_create_qr_code instead.

Parameters (1 required, 11 optional)
Required
group_guidstring

The unique identifier of the group (workspace)

Optional
archivedboolean

Whether the QR code should be archived (default: false).

bitlink_idstring

An existing Bitly link to reuse as the destination (with keyword to add a custom back-half). Optional: provide either long_url or bitlink_id.

domainstring

Custom short domain (e.g. bit.ly).

dynamic_routingarray

Optional dynamic routing rules that redirect visitors to different destinations based on their country, region, device, or OS. Provide an array of up to 10 rule objects; each rule must include 'long_url' plus at least one match/exclude condition. All of a rule's conditions must match for it to apply, and rules are evaluated top to bottom — the first matching rule wins. Fields per rule: 'long_url' (string, required) — destination for matching visitors; 'country_match'/'country_exclude' (array of ISO 3166-1 alpha-2 codes, e.g. ["US","GB"]); 'region_match'/'region_exclude' (array of ISO 3166-2 codes formatted 'CC-SUB', e.g. ["US-CA"]; the region's country must also appear in country_match); 'device_match'/'device_exclude' (array of "mobile", "tablet", or "desktop"); 'os_match'/'os_exclude' (array of "ios" or "android"). Example: [{"long_url":"https://example.com/us","country_match":["US"],"os_match":["ios"]},{"long_url":"https://example.com/row","country_exclude":["US"]}]. Omit to leave existing routing unchanged. When updating, the provided rules replace all existing rules (not additive); pass an empty array ([]) to remove all rules.

keywordstring

Custom back-half for the short link.

long_urlstring

URL to shorten. Required unless bitlink_id is provided (same rules as bitly_create_short_link).

qr_titlestring

Title for the QR code; defaults to the link title when omitted.

render_customizationsobject

QR appearance (same as bitly_create_qr_code). Example shape: { "background_color":"#ffffff", "dot_pattern_color":"#EF8000", "dot_pattern_type":"rounded", "corners":{ "corner_1":{ "inner_color":"#EF8000", "outer_color":"#EF8000", "shape":"leaf" }, "corner_2":{ "inner_color":"#EF8000", "outer_color":"#EF8000", "shape":"leaf" }, "corner_3":{ "inner_color":"#EF8000", "outer_color":"#EF8000", "shape":"leaf" } }, "gradient":{ "style":"linear", "angle":45, "colors":[ { "color":"#c80404", "offset":10 }, { "color":"#042f86", "offset":90 } ], "exclude_corners":false }, "background_gradient":{ "style":"radial", "colors":[ { "color":"#c696ee", "offset":25 }, { "color":"#d4e1a8", "offset":50 } ] }, "logo":{ "image_guid":"bitlylogo" }, "frame":{ "id":"text_bottom", "colors":{ "primary":"#f55656", "background":"#ffffff" }, "text":{ "primary":{ "content":"QR Frame" }, "secondary":{ "content":"Frame Text" } } }, "branding":{ "bitly_brand":true }, "spec_settings":{ "error_correction":4 } }

response_formatstring

'text' (default) or 'json'

tagsarray

Tags for the short link.

titlestring

Title for the short link.

Bitly Create Site

bitly_create_site
Full Description

Create a new, empty Bitly Site (link-in-bio page) for a group at a short URL, using default appearance. The new site is a draft with no buttons; add content with bitly_create_site_block and bitly_create_site_container, style it with bitly_update_site_appearance, then make it live with bitly_publish_site.

Parameters (2 required, 2 optional)
Required
group_guidstring

The unique identifier of the group (workspace)

uristring

The short URL for the site. Pass just a keyword ('mysite'), a domain and keyword ('bit.ly/mysite'), or the full 'domain/m/keyword' form; the '/m/' path segment is added automatically, and a bare keyword assumes the bit.ly domain. The domain must be bit.ly, another Bitly domain, or a branded short domain the group can use.

Optional
display_namestring

The site's display name (heading). Defaults to a system value when omitted.

response_formatstring

'text' (default) or 'json'

Bitly Create Site Block

bitly_create_site_block
Full Description

Add a content block to a Bitly Site: a bitlink button, social icon, YouTube video, image, digital business card, or text block. New blocks are active (visible) by default. The change is a draft; publish it with bitly_publish_site. For a YouTube block, call bitly_prevalidate_site_button first to resolve the video. To nest the block in a grid/carousel, create the container first with bitly_create_site_container and pass its ID as 'parent'.

Parameters (3 required, 7 optional)
Required
contentobject

The block's content object, whose shape depends on content_type. Examples: bitlink -> {"bitlink_id":"bit.ly/abc","link_title":"My link"}; social -> {"channel":"instagram","url":"https://instagram.com/me"}; youtubeVideo -> {"video_id":"...","link_title":"..."} (prevalidate first with bitly_prevalidate_site_button); image -> {"image_guid":"...","image_url":"..."}; digital_business_card -> {"layout":"card","first_name":"John","last_name":"Doe","company":"...","job_title":"...","download_enabled":false,"contacts":[{"contact_method":"phone","method_type":"mobile","value":"555-555-1234","sort_order":0},{"contact_method":"website","method_type":"personal","value":"https://example.com/jon","sort_order":1}]} (layout is REQUIRED: one of 'button', 'card', 'inline'; contact fields like phone/email/website/location/note go in the contacts array, NOT as top-level keys; each contact needs a contact_method of phone|email|location|website|note, a method_type (e.g. phone: mobile/home/work/personal/main/fax/office/other; email: work/personal/home/other; website: personal/work/company/homepage/other; location: address/home/work/other), a value, and a unique sort_order that is sequential across contacts; link_title is required only when layout is 'button'); text_block -> {"text":"..."}. The API validates the shape for the given content_type.

content_typestring

The kind of content block: 'bitlink' (a link to a short link), 'social' (a social channel icon), 'youtubeVideo' (an embedded video), 'image', 'digital_business_card', or 'text_block'.

Options:bitlinksocialyoutubeVideoimagedigital_business_cardtext_block
site_idstring

The unique identifier of the Bitly Site

Optional
appearanceobject

Optional appearance object; only applies to text_block content (alignment, font_size, colors).

is_activeboolean

Whether the block is active (visible) on the site. When creating a block, this defaults to true if omitted; when updating, omitting it leaves the current state unchanged.

is_pinnedboolean

Whether the block is pinned. Only blocks on the root (no parent container) can be pinned.

parentstring

Optional container block ID to nest this block inside (a grid or carousel created with bitly_create_site_container). Omit to place it at the root.

response_formatstring

'text' (default) or 'json'

schedule_endstring

Optional RFC 3339 timestamp when the block should become inactive.

schedule_startstring

Optional RFC 3339 timestamp when the block should become active.

Bitly Create Site Container

bitly_create_site_container
Full Description

Create a container (a grid or carousel) on a Bitly Site to group content blocks. Requires a plan with the corresponding feature. After creating it, add child blocks with bitly_create_site_block, passing the returned container's block ID as the 'parent'.

Parameters (2 required, 1 optional)
Required
site_idstring

The unique identifier of the Bitly Site

typestring

The container type: 'grid' or 'carousel'.

Options:gridcarousel
Optional
response_formatstring

'text' (default) or 'json'

Bitly Create Site Image

bitly_create_site_image
Full Description

Register an already-uploaded image for use on a Bitly Site (e.g. as an avatar, background, or image block). You must upload the image and obtain its image_guid and URL first; this associates it with the site for a given use. Returns the image's URL and GUID to reference in appearance or content updates.

Parameters (4 required, 2 optional)
Required
image_guidstring

The GUID of the previously uploaded image.

image_usestring

How the image is used on the site (its position/role, e.g. avatar or background). Must be a valid site image use.

site_idstring

The unique identifier of the Bitly Site

urlstring

The URL of the uploaded image.

Optional
cropstring

Optional crop coordinates as a JSON-encoded rectangle string.

response_formatstring

'text' (default) or 'json'

Bitly Delete Short Link

bitly_delete_short_link
Full Description

Delete a short link permanently. This operation removes unedited short links (non-customized links only) and cannot be undone. The short link must not have overrides, be part of campaigns, have deeplinks, or be used in a page. Only group administrators can delete short links.

Parameters (1 required, 1 optional)
Required
bitlink_idstring

The complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')

Optional
response_formatstring

'text' (default) or 'json'

Bitly Delete Site

bitly_delete_site
Full Description

Deactivate (delete) a Bitly Site. This takes the live site down. To only throw away unpublished edits while keeping the live site, use bitly_discard_site_draft instead.

Parameters (1 required, 1 optional)
Required
site_idstring

The unique identifier of the Bitly Site

Optional
response_formatstring

'text' (default) or 'json'

Bitly Delete Site Block

bitly_delete_site_block
Full Description

Delete a block of any type from a Bitly Site: a bitlink button, social icon, YouTube video, image, digital business card, text block, or a grid/carousel container (which also deletes the blocks inside it). Fetch the block's ID with bitly_get_site. The change is a draft; publish it with bitly_publish_site.

Parameters (2 required, 1 optional)
Required
block_idstring

The ID of the block to delete.

site_idstring

The unique identifier of the Bitly Site

Optional
response_formatstring

'text' (default) or 'json'

Bitly Delete Site Redirect

bitly_delete_site_redirect
Full Description

Delete a redirect from a Bitly Site. Redirects are created automatically when a site's URI changes (see bitly_update_site); this removes one, identified by its old domain and keyword. Inspect a site's redirects with bitly_get_site (response_format 'json').

Parameters (3 required, 1 optional)
Required
domainstring

The redirect's domain (e.g. 'bit.ly').

keywordstring

The redirect's keyword (the path after the domain).

site_idstring

The unique identifier of the Bitly Site

Optional
response_formatstring

'text' (default) or 'json'

Bitly Discard Site Draft

bitly_discard_site_draft
Full Description

Discard a Bitly Site's unpublished draft, reverting in-progress edits back to the currently published version. The live site is unaffected. To take the whole site down, use bitly_delete_site.

Parameters (1 required, 1 optional)
Required
site_idstring

The unique identifier of the Bitly Site

Optional
response_formatstring

'text' (default) or 'json'

Bitly Export Data

bitly_export_data
Full Description

Export link or QR data as CSV. Always use response_format="json". Returns a download-card payload (filename, row_count, truncated, columns) — do not paste CSV, base64, or data_uri into chat; tell the user the file is ready to download. Dates: use unix_from_date and unix_to_date as YYYY-MM-DD (UTC); the server converts to timestamps. For relative ranges (e.g. "last 30 days", "this month"), derive dates from system context. Choose export_type by what the user asked for: link_engagements_timeseries — one CSV row per calendar day (never monthly). REQUIRED when the user says daily, by day, each day, per day, time series, engagements over time, or any daily metrics export — even without an explicit date range. Never use link_engagements_batch for those. One known link: bitlinks=["domain.com/backhalf"] (fully qualified short URL). Multiple links: filter (tags, destination, domain, query, etc.) for dashboard link-performance columns (Date, Short Link, Destination, Clicks, QR Scans, Button Clicks, Total Engagements) — one row per link per day. For link_engagements_timeseries always set unix_from_date and unix_to_date: use the user's range if given; otherwise default to the last 30 days from system context. link_engagements_batch — one row per link with period totals (Link, Title, clicks/scans/button_clicks for the whole range). Use only for summary tables with no daily breakdown (e.g. "total engagements per link"). links_list — link metadata CSV (filter required; optional include_metrics). qr_codes_list — QR metadata CSV (filter required; optional include_metrics). For link_engagements_timeseries and link_engagements_batch: provide bitlinks OR filter, not both. For link_engagements_timeseries, always pass unix_from_date/unix_to_date (default last 30 days if the user did not specify a range). For link_engagements_batch and list exports, omitting dates falls back to the tier max-history window. Filter tips: filter.destination (hostname, hostname/path, or path) for "links pointing to destination.com" — prefer over filter.query; filter.tags for tag-based sets; filter.query for free-text search on title/tags/URLs. Row caps: up to 200 matched links for engagement exports (bitlinks list or filter resolution); if truncated is true, only the first 200 links were included — say the export is partial and ask the user to narrow filter (tags, destination, domain, dates, campaign, query) or split bitlinks into batches of 200 or fewer. If the API returns EXPORT_TOO_LARGE, the link×day grid exceeds the inline limit — ask the user to narrow the date range or filter to fewer links. Do not state or infer a total match count. For links_list/qr_codes_list with include_metrics, cap is 200 rows; without metrics, 1000. Do not auto-retry bitly_export_data — wait for the user.

Parameters (2 required, 6 optional)
Required
export_typestring

Which export shape to produce. "link_engagements_timeseries" — one row per calendar day (use for daily/by-day/time-series requests; never monthly). "link_engagements_batch" — one row per link with period totals only (no daily breakdown). "links_list" — link metadata list. "qr_codes_list" — QR metadata list. See the tool description for columns, filters, and date parameters.

group_guidstring

The unique identifier of the group (workspace)

Optional
bitlinksarray

Explicit list of fully qualified bitlinks (e.g. "bit.ly/abc"). Used by link_engagements_timeseries and link_engagements_batch when you already know the exact bitlinks. Mutually exclusive with `filter` (provide one or the other). Hard-capped at 200 matched links; oversized lists set truncated=true.

filterobject

Server-side filter object resolved against the user's brand. Required for export_type "links_list" and "qr_codes_list"; optional for "link_engagements_batch" and "link_engagements_timeseries" (mutually exclusive with `bitlinks`). Accepted fields: "tags" (string array), "domain" (string), "archived" ("on"/"off"/"both"), "query" (free-text search across title, tags, and URLs), "destination" (hostname, hostname/path, or path prefix — matches link destination URLs; prefer over query for "links pointing to destination.com"), "created_after_date" ("YYYY-MM-DD", UTC start-of-day inclusive — preferred over created_after), "created_before_date" ("YYYY-MM-DD", UTC start-of-following-day exclusive — preferred over created_before), "campaign_guid" (string; ignored for qr_codes_list).

include_metricsboolean

For links_list and qr_codes_list only. Appends clicks, scans, button_clicks columns (requires unix_from_date/unix_to_date). Row cap is 200 instead of 1000. Ignored for link_engagements_batch and link_engagements_timeseries.

response_formatstring

'text' (default) or 'json'

unix_from_datestring

Start of the metrics date range as "YYYY-MM-DD" (UTC). Maps to midnight (00:00:00 UTC) of that day. Required for link_engagements_timeseries (default last 30 days if the user did not specify a range). Also used by link_engagements_batch and list exports with include_metrics=true. Clamped to the user's tier data window. Example: "2026-05-01".

unix_to_datestring

End of the metrics date range as "YYYY-MM-DD" (UTC). Maps to 23:59:59 UTC of that day (inclusive). Must be the same day as or after unix_from_date when both are set. Example: "2026-05-18".

Bitly Get Custom Domain Details

bitly_get_custom_domain_details
Full Description

Get one custom domain's setup state and settings: verification status ('pending', 'ok', or 'error') with any verification error, attached groups, and, once verified, HTTPS/HSTS, redirect, and SSL certificate details. Works for domains still being set up, so use it to check whether a domain added with bitly_create_custom_domain has verified yet. Requires membership in a group the domain is attached to, or an admin role in the owning organization.

Parameters (1 required, 1 optional)
Required
custom_domainstring

The custom domain, e.g. 'links.example.com' (a subdomain) or 'example.link' (a root domain).

Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Custom Domain Dns

bitly_get_custom_domain_dns
Full Description

Get the DNS records a custom domain needs at its registrar, the records currently resolving, and whether they match. Use this right after bitly_create_custom_domain to tell the user exactly which records to create (a subdomain needs one CNAME; a root domain needs two A records), and again when a domain stays 'pending' or reports 'error'. Only answers for a domain already added to the organization (pending counts), so call bitly_create_custom_domain first. A fresh record can take time to propagate; empty current records do not mean the records are wrong.

Parameters (2 required, 1 optional)
Required
custom_domainstring

The custom domain, e.g. 'links.example.com' (a subdomain) or 'example.link' (a root domain).

organization_guidstring

The unique identifier of the organization that owns (or will own) the custom domain. The caller must belong to this organization, and must be one of its admins for any tool that creates or changes a domain. Get it from bitly_get_organizations.

Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Custom Domains

bitly_get_custom_domains
Full Description

Gets a list of custom domains that can be used for link shortening. This is the member view: only verified domains, across every organization and group, with no setup state. To see an organization's domains with their verification status and settings (including domains still being set up), use bitly_get_organization_custom_domains.

Parameters (0 required, 1 optional)
Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Custom Link Details

bitly_get_custom_link_details
Full Description

Get full details and destination-override history for a custom-keyword short link — a link with a custom back-half such as 'bit.ly/summer-sale'. Returns the underlying link's metadata plus each destination the keyword has pointed to over time. Use this when the link has a custom keyword and you need its override history. The link MUST be a custom-keyword link — a plain auto-generated link fails with NOT_CUSTOM_BITLINK; for those, use bitly_get_short_link_details instead.

Parameters (1 required, 1 optional)
Required
custom_bitlinkstring

The short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')

Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Domain Agreements

bitly_get_domain_agreements
Full Description

Get Bitly's Domain Name Use Agreement (https://bitly.com/pages/domain-name-use-agreement), which the user must accept before Bitly registers a domain for them, and the agreement keys to send with the registration. Show the user the title and link of the agreement and get an explicit acceptance, then pass all of the agreement keys to bitly_create_complimentary_domain. The keys are internal IDs, not agreements: never show or describe them to the user. Never accept the agreement for the user.

Parameters (2 required, 1 optional)
Required
domainstring

The root domain to register, e.g. 'example.link'. Pick it from the results of bitly_search_available_domains; subdomains cannot be registered.

organization_guidstring

The unique identifier of the organization that owns (or will own) the custom domain. The caller must belong to this organization, and must be one of its admins for any tool that creates or changes a domain. Get it from bitly_get_organizations.

Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Group Analytics

bitly_get_group_analytics
Full Description

Get analytics across all links in a group (workspace). Use this when the user asks about overall performance or top-performing links, rather than one specific link. For a single link use bitly_get_link_analytics; for a single QR code's scans use bitly_get_qr_code_analytics. Choose a dataset — 'clicks', 'engagements' (clicks + QR scans + button clicks), 'qr_scans', or 'agentic_traffic' (clicks from AI agents and assistants) — and a dimension: a facet breakdown, 'over_time' (time series), 'top' (best performing links), or 'summary' (a total). There is no group-level total/summary dimension: for an overall count over a period use 'over_time' and total the returned series; for a single link's total use bitly_get_link_analytics with dimension 'summary'. Valid dimensions per dataset — agentic_traffic: summary; clicks: cities, countries, device_os, over_time, referrers, top; engagements: cities, countries, devices, over_time, referrers, referring_networks, top; qr_scans: cities, countries, over_time, top. 'devices' is device form factor (mobile, desktop, ...) and 'device_os' is operating system (iOS, Android, Windows, ...). Notes: for datasets 'engagements' and 'qr_scans' the raw JSON keys counts as 'clicks' even though the values are engagements/scans; for dataset 'clicks' with dimension 'referrers' the v4 API returns engagement counts, not clicks alone; dataset 'agentic_traffic' always covers a fixed 90-day window and ignores the unit/units/unit_reference parameters.

Parameters (3 required, 5 optional)
Required
datasetstring

What to measure: 'clicks' (link clicks only), 'engagements' (clicks + QR scans + button clicks), 'qr_scans' (QR code scans only), or 'agentic_traffic' (clicks from AI agents and assistants, fixed 90-day total).

Options:agentic_trafficclicksengagementsqr_scans
dimensionstring

The report to return. Valid values depend on the dataset — agentic_traffic: summary; clicks: cities, countries, device_os, over_time, referrers, top; engagements: cities, countries, devices, over_time, referrers, referring_networks, top; qr_scans: cities, countries, over_time, top.

Options:citiescountriesdevice_osdevicesover_timereferrersreferring_networkssummarytop
group_guidstring

The unique identifier of the group (workspace)

Optional
response_formatstring

'text' (default) or 'json'

sizenumber

Maximum number of results to return (default varies)

unitstring

Time granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: day

Options:minutehourdayweekmonth
unit_referencestring

ISO 8601 timestamp for the END of the time range. The range is the last 'units' periods ending on this date (e.g. '2025-02-28T00:00:00+0000' with units=28 gives all of February). For a full month, use the last day of that month (e.g. 2026-02-28 for Feb 2026). Omit for default: now.

unitsstring

Number of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.

Bitly Get Group Details

bitly_get_group_details
Full Description

Get specific group information and details by group GUID. Returns comprehensive group metadata including name, organization, role, creation dates, custom domains (BSDs), and status. Use this to get detailed information about a specific group rather than listing all groups. Its custom-domain list is also used to pick a short domain when creating links (see bitly_get_group_preferences for the group's preferred domain).

Parameters (1 required, 1 optional)
Required
group_guidstring

The unique identifier of the group (workspace)

Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Group Preferences

bitly_get_group_preferences
Full Description

Get a group's preferences, including its default (preferred) short domain. Use this when deciding which domain to shorten a link to: check the group's preferred domain here first, then fall back to bitly_get_group_details for the group's full list of available custom domains.

Parameters (1 required, 1 optional)
Required
group_guidstring

The unique identifier of the group (workspace)

Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Group Qr Codes

bitly_get_group_qr_codes
Full Description

List the QR codes in a group, with search, archived-status and dynamic-routing filters, and pagination. Use this to browse a group's QR codes or to find one by title or destination when you don't have its ID. Note: QR codes backed by an existing short link (coupled) appear here. bitly_update_qr_code can still change their title, archived status and visual customizations, and dynamic routing must be set on the underlying link with bitly_update_short_link instead. Expiration is not supported on coupled QR codes at all.

Parameters (1 required, 6 optional)
Required
group_guidstring

The unique identifier of the group (workspace)

Optional
archivedstring

Filter by archived status: 'on' (archived only), 'off' (non-archived only), 'both' (all)

Options:onoffboth
has_dynamic_routingstring

Filter by dynamic routing: 'on' (only QR codes with dynamic routing), 'off' (only those without), 'both' (all, default). Requires the dynamic_routing feature; otherwise ignored.

Options:onoffboth
querystring

Search term to filter QR codes by title or destination URL

response_formatstring

'text' (default) or 'json'

search_afterstring

Pagination cursor for retrieving next page of results

sizestring

Number of QR codes to return (default: 50, max: 100)

Bitly Get Group Short Links

bitly_get_group_short_links
Full Description

Get links in a specific group with filtering and pagination. Returns a list of links belonging to the specified group, with support for search, filtering by tags, and pagination. Use this to browse, search, or manage links within a workspace. For links ranked by click performance instead, use bitly_get_group_short_links_sorted.

Parameters (1 required, 9 optional)
Required
group_guidstring

The unique identifier of the group (workspace)

Optional
archivedstring

Filter by archived status: 'on' (archived only), 'off' (non-archived only), 'both' (all)

Options:onoffboth
created_afterstring

Filter links created after this time, as a Unix timestamp in seconds (e.g. 1704067200). ISO 8601 strings are rejected.

created_beforestring

Filter links created before this time, as a Unix timestamp in seconds (e.g. 1704067200). ISO 8601 strings are rejected.

has_dynamic_routingstring

Filter by dynamic routing: 'on' (only links with dynamic routing), 'off' (only links without), 'both' (all, default). Requires the dynamic_routing feature; otherwise ignored.

Options:onoffboth
querystring

Search term to filter links by title, destination URL, or short URL

response_formatstring

'text' (default) or 'json'

search_afterstring

Pagination cursor for retrieving next page of results

sizestring

Number of links to return (default: 50, max: 100)

tagarray

Tags to filter links by, e.g. ["campaign", "q1"]. Multiple tags are combined with AND: only links carrying every tag listed are returned, so pass one tag to match links having that tag. There is no way to match links having any of several tags in one call — query each tag separately and merge the results.

Bitly Get Group Short Links Sorted

bitly_get_group_short_links_sorted
Full Description

Get a group's links ranked by click performance, with per-link metrics and time-series data. Use this when the user wants their best- (or worst-) performing links in a group, e.g. 'show my top links this month'. To browse or search a group's links without ranking them, use bitly_get_group_short_links instead.

Parameters (2 required, 5 optional)
Required
group_guidstring

The unique identifier of the group (workspace)

sortstring

Sort method for the results: 'clicks' ranks links by click performance

Options:clicks
Optional
response_formatstring

'text' (default) or 'json'

sizenumber

Maximum number of results to return (default varies)

unitstring

Time granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: day

Options:minutehourdayweekmonth
unit_referencestring

ISO 8601 timestamp for the END of the time range. The range is the last 'units' periods ending on this date (e.g. '2025-02-28T00:00:00+0000' with units=28 gives all of February). For a full month, use the last day of that month (e.g. 2026-02-28 for Feb 2026). Omit for default: now.

unitsstring

Number of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.

Bitly Get Group Sites

bitly_get_group_sites
Full Description

List the Bitly Sites (link-in-bio pages / microsites) in a group (workspace), with URL filtering and pagination. Use this to browse a group's sites or find one by URL when you don't have its site ID. A Bitly Site is a landing page of buttons/links reachable at a short URL; manage an individual site with bitly_get_site, bitly_create_site, and bitly_update_site.

Parameters (1 required, 4 optional)
Required
group_guidstring

The unique identifier of the group (workspace)

Optional
response_formatstring

'text' (default) or 'json'

search_afterstring

Pagination cursor for the next page of results

sites_url_paramstring

Filter sites by URL substring

sizestring

Number of sites to return (default: 50, max: 100)

Bitly Get Groups

bitly_get_groups
Full Description

Get all groups (workspaces) that the authenticated user has access to across all organizations. Groups are collections of links and users within an organization. This tool shows group names, IDs, roles, custom domains, and organization associations.

Parameters (0 required, 2 optional)
Optional
organization_guidstring

Optional organization GUID to filter groups by specific organization. If provided, only groups belonging to this organization will be returned.

response_formatstring

'text' (default) or 'json'

Bitly Get Link Analytics

bitly_get_link_analytics
Full Description

Get analytics for a single short link. Use this when the user asks how one specific link is performing. The dimension selects the report: a breakdown by countries, cities, devices (form factor), referrers, or referring_domains; 'over_time' for a click time series; 'summary' for total click counts; 'engagements'/'engagements_summary' for the same reports with a clicks/scans/button-clicks breakdown; or 'agentic_traffic' for a breakdown of clicks from AI agents and assistants (ChatGPT, Claude, ...) by agent. Agentic traffic is counted separately from clicks, so it is not a subset of the click totals. For analytics across every link in a group (workspace), or top-performing links, use bitly_get_group_analytics. For a single QR code's scans, use bitly_get_qr_code_analytics.

Parameters (2 required, 5 optional)
Required
bitlink_idstring

The complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')

dimensionstring

The report to return: a facet breakdown (countries, cities, devices, referrers, referring_domains), 'over_time' (click time series), 'summary' (total clicks), 'engagements' (time series with clicks/scans/button breakdown), 'engagements_summary' (totals with that breakdown), or 'agentic_traffic' (clicks from AI agents, broken down by agent).

Options:agentic_trafficcitiescountriesdevicesengagementsengagements_summaryover_timereferrersreferring_domainssummary
Optional
response_formatstring

'text' (default) or 'json'

sizenumber

Maximum number of results to return (default varies)

unitstring

Time granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: day

Options:minutehourdayweekmonth
unit_referencestring

ISO 8601 timestamp for the END of the time range. The range is the last 'units' periods ending on this date (e.g. '2025-02-28T00:00:00+0000' with units=28 gives all of February). For a full month, use the last day of that month (e.g. 2026-02-28 for Feb 2026). Omit for default: now.

unitsstring

Number of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.

Bitly Get Link Destination

bitly_get_link_destination
Full Description

Look up where a short link points: returns its destination long URL plus basic fields (creation time, link ID, and any dynamic-routing destination URLs). Works for any bitlink, including links you don't own. Use this when the user just wants a short link's destination or to verify where it redirects. For full owned-link metadata (tags, creator, campaigns, QR codes, routing rule conditions), use bitly_get_short_link_details instead.

Parameters (1 required, 1 optional)
Required
bitlink_idstring

The complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')

Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Organization Custom Domains

bitly_get_organization_custom_domains
Full Description

List the custom domains of an organization with their setup state: verification status ('pending', 'ok', or 'error'), attached groups, and, once verified, HTTPS/HSTS and redirect settings. Includes domains still being set up. Requires an organization admin; without organization_guid it lists the domains of every organization the caller administers. Use this to check on a domain setup or to review an organization's domain configuration. For the plain list of domains the user can shorten with, use bitly_get_custom_domains instead.

Parameters (0 required, 2 optional)
Optional
organization_guidstring

Optional organization GUID to list the custom domains of one organization. Omit to list the domains of every organization the caller administers.

response_formatstring

'text' (default) or 'json'

Bitly Get Organizations

bitly_get_organizations
Full Description

Get all organizations that the authenticated user has access to. Returns organization details including organization ID, name, tier information, role, creation/modification dates, and associated custom domains, also known as branded short domains (BSDs). Use this to understand organizational context and access permissions.

Parameters (0 required, 1 optional)
Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Qr Code

bitly_get_qr_code
Full Description

Get full details for a QR code by its ID: title, destination URL, group, type, archived status, and dynamic routing rules. Use this when you have a QR code ID and need its metadata or current routing. To find QR codes when you don't have an ID, list them with bitly_get_group_qr_codes.

Parameters (1 required, 1 optional)
Required
qrcode_idstring

The unique identifier of the QR code

Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Qr Code Analytics

bitly_get_qr_code_analytics
Full Description

Get scan analytics for a single QR code. Use this when the user asks how one specific QR code is performing. The dimension selects the report: a breakdown by countries, cities, device_os (operating system), or browsers; 'over_time' for a time series of scans; or 'summary' for total scan counts. For a single link's clicks/engagements use bitly_get_link_analytics; for QR scans across a whole group use bitly_get_group_analytics with dataset 'qr_scans'.

Parameters (2 required, 5 optional)
Required
dimensionstring

The report to return: a facet breakdown (countries, cities, device_os, browsers), 'over_time' (time series), or 'summary' (totals).

Options:browserscitiescountriesdevice_osover_timesummary
qrcode_idstring

The unique identifier of the QR code

Optional
response_formatstring

'text' (default) or 'json'

sizenumber

Maximum number of results to return (default varies)

unitstring

Time granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: day

Options:minutehourdayweekmonth
unit_referencestring

ISO 8601 timestamp for the END of the time range. The range is the last 'units' periods ending on this date (e.g. '2025-02-28T00:00:00+0000' with units=28 gives all of February). For a full month, use the last day of that month (e.g. 2026-02-28 for Feb 2026). Omit for default: now.

unitsstring

Number of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.

Bitly Get Qr Code Image

bitly_get_qr_code_image
Full Description

Return a QR code's image as a base64 data URI (SVG default, or PNG). Most agent UIs cannot render raw image data, so prefer directing the user to the QR code's details page (included in bitly_get_qr_code and bitly_create_qr_code responses) to download the image. Only call this tool if you are certain you can process raw base64 image data.

Parameters (1 required, 2 optional)
Required
qrcode_idstring

The unique identifier of the QR code

Optional
formatstring

Image format: 'svg' or 'png' (default: svg)

Options:svgpng
response_formatstring

'text' (default) or 'json'

Bitly Get Short Link Details

bitly_get_short_link_details
Full Description

Get complete metadata for a short link in your account: title, destination URL, creation time, creator, tags, custom domains, campaign and QR-code IDs, deeplinks, and dynamic routing rules. Use this when you need full details about a link you own. For a lightweight destination-only lookup of any bitlink (including links you don't own), use bitly_get_link_destination instead. For a custom-keyword link's override history, use bitly_get_custom_link_details.

Parameters (1 required, 1 optional)
Required
bitlink_idstring

The complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')

Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Site

bitly_get_site
Full Description

Get a Bitly Site's full configuration by its site ID: URL, status, display name, description, button count, attached QR code, and whether it has unpublished changes. To find a site ID, list a group's sites with bitly_get_group_sites.

Parameters (1 required, 1 optional)
Required
site_idstring

The unique identifier of the Bitly Site

Optional
response_formatstring

'text' (default) or 'json'

Bitly Get Site Analytics

bitly_get_site_analytics
Full Description

Get analytics for a single Bitly Site (link-in-bio page). Use this when the user asks how a site is performing. Choose a dataset — 'page_views' (visits to the site), 'button_clicks' (clicks on the site's buttons/links), 'dbc_downloads' (digital business card downloads), 'overview' (a page-views + button-clicks rollup), or 'link_performance' (per-button click totals) — and a dimension: a facet breakdown (countries, cities, devices, referrers), 'over_time' (time series), 'summary' (a total), or 'top' (most-clicked buttons). Valid dimensions per dataset — button_clicks: cities, countries, devices, over_time, top; dbc_downloads: over_time; link_performance: summary; overview: summary; page_views: cities, countries, devices, over_time, referrers, summary. For a single short link's clicks use bitly_get_link_analytics; for a whole group use bitly_get_group_analytics.

Parameters (3 required, 5 optional)
Required
datasetstring

What to measure: 'page_views' (site visits), 'button_clicks' (clicks on the site's buttons), 'dbc_downloads' (digital business card downloads), 'overview' (page-views + button-clicks rollup), or 'link_performance' (per-button click totals).

Options:button_clicksdbc_downloadslink_performanceoverviewpage_views
dimensionstring

The report to return. Valid values depend on the dataset — button_clicks: cities, countries, devices, over_time, top; dbc_downloads: over_time; link_performance: summary; overview: summary; page_views: cities, countries, devices, over_time, referrers, summary.

Options:citiescountriesdevicesover_timereferrerssummarytop
site_idstring

The unique identifier of the Bitly Site

Optional
response_formatstring

'text' (default) or 'json'

sizenumber

Maximum number of results to return (default varies)

unitstring

Time granularity for metrics data: 'minute', 'hour', 'day', 'week', or 'month'. Determines how metrics are grouped by time. default: day

Options:minutehourdayweekmonth
unit_referencestring

ISO 8601 timestamp for the END of the time range. The range is the last 'units' periods ending on this date (e.g. '2025-02-28T00:00:00+0000' with units=28 gives all of February). For a full month, use the last day of that month (e.g. 2026-02-28 for Feb 2026). Omit for default: now.

unitsstring

Number of time periods to include (e.g., '7' with unit='day' returns 7 days of data). Defaults to 30 when not specified.

Bitly Get Site Templates

bitly_get_site_templates
Full Description

List Bitly Site templates that can be applied to a site, optionally filtered by category. Use this to discover a template_guid, then apply it with bitly_apply_site_template.

Parameters (0 required, 2 optional)
Optional
categorystring

Filter templates by category (e.g. 'Link-in-bio', 'Digital business card', 'Image gallery').

response_formatstring

'text' (default) or 'json'

Bitly Get User

bitly_get_user
Full Description

Get authenticated user information including profile details, email addresses, 2FA status, and default group. Provides user context for other operations.

Parameters (0 required, 1 optional)
Optional
response_formatstring

'text' (default) or 'json'

Bitly Prevalidate Custom Domain

bitly_prevalidate_custom_domain
Full Description

Check whether a domain the user already owns can be connected to an organization as a custom domain, without creating anything. Catches a malformed, reserved, or blocklisted domain, one held by another Bitly account, and an organization at its custom domain limit. Use this before bitly_create_custom_domain to confirm the domain with the user; it is safe to call repeatedly. Requires an organization admin.

Parameters (2 required, 1 optional)
Required
custom_domainstring

The custom domain, e.g. 'links.example.com' (a subdomain) or 'example.link' (a root domain).

organization_guidstring

The unique identifier of the organization that owns (or will own) the custom domain. The caller must belong to this organization, and must be one of its admins for any tool that creates or changes a domain. Get it from bitly_get_organizations.

Optional
response_formatstring

'text' (default) or 'json'

Bitly Prevalidate Site Button

bitly_prevalidate_site_button
Full Description

Prevalidate button content before adding it to a Bitly Site. Currently supports YouTube videos: given a video_id, it returns the resolved video URL, title, and thumbnail to use when creating a 'youtubeVideo' content block with bitly_create_site_block.

Parameters (3 required, 1 optional)
Required
button_typestring

The button type to prevalidate. Only 'youtubeVideo' is supported.

Options:youtubeVideo
site_idstring

The unique identifier of the Bitly Site

video_idstring

The YouTube video ID to resolve.

Optional
response_formatstring

'text' (default) or 'json'

Bitly Publish Site

bitly_publish_site
Full Description

Publish a Bitly Site's draft so the current edits go live. Newly created sites and edits are drafts until published. Use bitly_get_site to check whether a site has unpublished changes.

Parameters (1 required, 1 optional)
Required
site_idstring

The unique identifier of the Bitly Site

Optional
response_formatstring

'text' (default) or 'json'

Bitly Search Available Domains

bitly_search_available_domains
Full Description

Search for new domains that Bitly can register for an organization as its complimentary custom domain, at no cost to the user. Takes a keyword ('acme') or a full domain ('acme.link') and returns up to 25 available root domains; a full domain also gets its own availability. Every result was available to register when the search ran. Use this when the user wants a new branded domain and does not own one; for a domain the user already owns, use bitly_prevalidate_custom_domain instead. Next steps: bitly_get_domain_agreements for the chosen domain, then bitly_create_complimentary_domain.

Parameters (2 required, 1 optional)
Required
organization_guidstring

The unique identifier of the organization that owns (or will own) the custom domain. The caller must belong to this organization, and must be one of its admins for any tool that creates or changes a domain. Get it from bitly_get_organizations.

querystring

A keyword or a full domain, at most 32 bytes (fewer characters for non-ASCII names), e.g. 'acme' or 'acme.link'. Use the brand or company name the user gave.

Optional
response_formatstring

'text' (default) or 'json'

Bitly Update Custom Domain

bitly_update_custom_domain
Full Description

Update a verified custom domain's settings: where the bare domain and unknown paths redirect, and HTTPS/HSTS behavior. Only the fields you send change; omitted fields are left as-is. Requires an admin of the owning organization; a domain that is not yet verified returns CUSTOM_DOMAIN_NOT_VERIFIED, so wait for verification rather than retrying. To attach the domain to a group use bitly_update_group; to make it a group's default use bitly_update_group_preferences.

Parameters (1 required, 6 optional)
Required
custom_domainstring

The custom domain, e.g. 'links.example.com' (a subdomain) or 'example.link' (a root domain).

Optional
hsts_enabledboolean

Whether to send the HTTP Strict Transport Security header, forcing browsers to use HTTPS on later visits. Only send it when the user asked to change it.

https_enabledboolean

Whether links on this domain are served over HTTPS. Only send it when the user asked to change it.

response_formatstring

'text' (default) or 'json'

root_redirectstring

URL that visitors to the bare domain (no path) are redirected to, e.g. 'https://www.example.com'. Pass an empty string ('') to clear it.

upgrade_insecure_requestsboolean

Whether to send the upgrade-insecure-requests header so browsers upgrade HTTP requests to HTTPS. Only send it when the user asked to change it.

wildcard_redirectstring

URL that visitors to an unknown or expired path are redirected to instead of a 404, e.g. 'https://www.example.com/not-found'. Pass an empty string ('') to clear it.

Bitly Update Group

bitly_update_group
Full Description

Rename a group (workspace) or change which custom domains it can shorten links with. The 'bsds' list REPLACES the group's current custom domains: to add one, first read the current list with bitly_get_group_details and pass it back with the new domain appended; omitting a domain the group has today detaches it. Only verified domains of the group's organization can be attached (see bitly_get_organization_custom_domains). Only the fields you send change. Requires a group admin. To make an attached domain the group's default for new links, use bitly_update_group_preferences.

Parameters (1 required, 3 optional)
Required
group_guidstring

The unique identifier of the group (workspace)

Optional
bsdsarray

The complete list of custom domains the group may use, e.g. ["links.example.com"]. Replaces the current list, so include every domain that should stay attached. Pass an empty array ([]) to detach all domains. Omit to leave unchanged.

namestring

New name for the group. Omit to leave unchanged.

response_formatstring

'text' (default) or 'json'

Bitly Update Group Preferences

bitly_update_group_preferences
Full Description

Set a group's default (preferred) short domain, used when a link is created for the group without an explicit domain. The domain must be 'bit.ly' or a custom domain already attached to the group (see bitly_get_group_details; attach one with bitly_update_group). Requires a group admin. Use this as the last step of a custom domain setup once the domain is verified.

Parameters (2 required, 1 optional)
Required
domain_preferencestring

The domain to use by default for new links in this group, e.g. 'links.example.com' or 'bit.ly'. Must already be attached to the group.

group_guidstring

The unique identifier of the group (workspace)

Optional
response_formatstring

'text' (default) or 'json'

Bitly Update Qr Code

bitly_update_qr_code
Full Description

Update an existing QR code's title, visual customizations, archived status, expiration, or dynamic routing rules. Use this to restyle a QR code, archive/unarchive it, or change its routing. Dynamic routing is only supported on QR codes with a long_url destination (decoupled); for a QR backed by an existing short link (coupled), set routing on the link via bitly_update_short_link instead. Rules you send replace all existing rules.

Parameters (1 required, 6 optional)
Required
qrcode_idstring

The QR code ID to update

Optional
archivedboolean

Whether the QR code should be archived

dynamic_routingarray

Optional dynamic routing rules that redirect visitors to different destinations based on their country, region, device, or OS. Provide an array of up to 10 rule objects; each rule must include 'long_url' plus at least one match/exclude condition. All of a rule's conditions must match for it to apply, and rules are evaluated top to bottom — the first matching rule wins. Fields per rule: 'long_url' (string, required) — destination for matching visitors; 'country_match'/'country_exclude' (array of ISO 3166-1 alpha-2 codes, e.g. ["US","GB"]); 'region_match'/'region_exclude' (array of ISO 3166-2 codes formatted 'CC-SUB', e.g. ["US-CA"]; the region's country must also appear in country_match); 'device_match'/'device_exclude' (array of "mobile", "tablet", or "desktop"); 'os_match'/'os_exclude' (array of "ios" or "android"). Example: [{"long_url":"https://example.com/us","country_match":["US"],"os_match":["ios"]},{"long_url":"https://example.com/row","country_exclude":["US"]}]. Omit to leave existing routing unchanged. When updating, the provided rules replace all existing rules (not additive); pass an empty array ([]) to remove all rules.

expiration_atstring

Optional expiration timestamp in ISO 8601 format 'YYYY-MM-DDTHH:MM:SS+0000' (e.g. "2026-12-31T23:59:59+0000"). Only supported on QR codes with a long_url destination, not ones backed by an existing short link, and on accounts entitled to link expiration; the API rejects it otherwise. When updating, pass an empty string ("") to remove an existing expiration; omit to leave it unchanged.

render_customizationsobject

Customize the look of the QR code. Apply 'foreground' colors to all corners and the pips. Space gradient colors evenly if no offsets are specified. Strictly follow the naming and structure of this example (non-relevant values can be left out): { "background_color":"#ffffff", "dot_pattern_color":"#EF8000", "dot_pattern_type":"rounded", "corners":{ "corner_1":{ "inner_color":"#EF8000", "outer_color":"#EF8000", "shape":"leaf" }, "corner_2":{ "inner_color":"#EF8000", "outer_color":"#EF8000", "shape":"leaf" }, "corner_3":{ "inner_color":"#EF8000", "outer_color":"#EF8000", "shape":"leaf" } }, "gradient":{ "style":"linear", "angle":45, "colors":[ { "color":"#c80404", "offset":10 }, { "color":"#042f86", "offset":90 } ], "exclude_corners":false }, "background_gradient":{ "style":"radial", "colors":[ { "color":"#c696ee", "offset":25 }, { "color":"#d4e1a8", "offset":50 } ] }, "logo":{ "image_guid":"bitlylogo" }, "frame":{ "id":"text_bottom", "colors":{ "primary":"#f55656", "background":"#ffffff" }, "text":{ "primary":{ "content":"QR Frame" }, "secondary":{ "content":"Frame Text" } } }, "branding":{ "bitly_brand":true }, "spec_settings":{ "error_correction":4 } }

response_formatstring

'text' (default) or 'json'

titlestring

The new title for the QR code

Bitly Update Short Link

bitly_update_short_link
Full Description

Update an existing short link's destination URL, title, tags, or archived status, or set its dynamic routing rules. Use this to change where a link points, rename it, add or remove tags, archive/unarchive it, or configure routing by country, region, device, or OS. For a QR code that is backed by an existing short link (coupled), set the QR's routing here on the link — not on the QR via bitly_update_qr_code. Dynamic routing rules you send replace all existing rules; send an empty array to clear them.

Parameters (1 required, 6 optional)
Required
bitlink_idstring

The complete short link in 'domain/hash' format (e.g., 'bit.ly/ABC123' or 'custom-domain.com/keyword')

Optional
archivedboolean

Set to true to archive the short link, false to unarchive it. Archived links are hidden from most views but still work.

dynamic_routingarray

Optional dynamic routing rules that redirect visitors to different destinations based on their country, region, device, or OS. Provide an array of up to 10 rule objects; each rule must include 'long_url' plus at least one match/exclude condition. All of a rule's conditions must match for it to apply, and rules are evaluated top to bottom — the first matching rule wins. Fields per rule: 'long_url' (string, required) — destination for matching visitors; 'country_match'/'country_exclude' (array of ISO 3166-1 alpha-2 codes, e.g. ["US","GB"]); 'region_match'/'region_exclude' (array of ISO 3166-2 codes formatted 'CC-SUB', e.g. ["US-CA"]; the region's country must also appear in country_match); 'device_match'/'device_exclude' (array of "mobile", "tablet", or "desktop"); 'os_match'/'os_exclude' (array of "ios" or "android"). Example: [{"long_url":"https://example.com/us","country_match":["US"],"os_match":["ios"]},{"long_url":"https://example.com/row","country_exclude":["US"]}]. Omit to leave existing routing unchanged. When updating, the provided rules replace all existing rules (not additive); pass an empty array ([]) to remove all rules.

long_urlstring

New destination URL to redirect the short link to. Use this to change where the short link points.

response_formatstring

'text' (default) or 'json'

tagsarray

Array of strings to replace the current tags. Pass empty array to remove all tags. Leave undefined to keep current tags.

titlestring

New title for the short link. Leave empty to keep current title unchanged.

Bitly Update Site

bitly_update_site
Full Description

Update a Bitly Site's URI, display name, description, or attach a QR code. Only the fields you send change; omitted fields are left as-is, and a present empty string ('') clears display_name/description. Changing the URI creates a redirect from the old one. To attach a QR code: create it first with bitly_create_qr_code, then pass its qr_code_id here (a site can only be attached to one QR code).

Parameters (1 required, 5 optional)
Required
site_idstring

The unique identifier of the Bitly Site

Optional
descriptionstring

New description; pass an empty string ('') to clear it, omit to leave unchanged.

display_namestring

New display name; pass an empty string ('') to clear it, omit to leave unchanged.

qr_code_idstring

The ID of a QR code to attach to this site. The site must not already have a QR code attached. Create one first with bitly_create_qr_code.

response_formatstring

'text' (default) or 'json'

uristring

New short URL. Pass just a keyword ('mysite'), a domain and keyword ('bit.ly/mysite'), or the full 'domain/m/keyword' form; the '/m/' path segment is added automatically, and a bare keyword assumes the bit.ly domain. Changing it creates a redirect from the previous URI.

Bitly Update Site Appearance

bitly_update_site_appearance
Full Description

Replace a Bitly Site's appearance: theme, layout, fonts, and colors. This is a full replacement (PUT) of the appearance object, so include every field you want set. Fetch the current appearance with bitly_get_site (response_format 'json') first to see the existing values. The change is a draft; publish it with bitly_publish_site.

Parameters (2 required, 1 optional)
Required
appearanceobject

The full appearance object to set. Fields include: 'theme_id' (number), 'layout' (string), 'layout_v2' (number), 'font' (string), 'style_preference' (string, e.g. 'theme' or 'custom'), 'hide_bitly_logo' (bool), color hex strings 'background_color', 'text_color', 'description_color', 'bottom_background_color', and a nested 'header_appearance' object. Colors are hex codes like '#FFFFFF'. When style_preference is 'custom', theme_id must be 0.

site_idstring

The unique identifier of the Bitly Site

Optional
response_formatstring

'text' (default) or 'json'

Bitly Update Site Block

bitly_update_site_block
Full Description

Update an existing block on a Bitly Site, replacing its content (and appearance for text blocks). For a bitlink button, the content object can change its destination, title, or description; for other blocks it depends on the block type. The block type is taken from the stored block, so it cannot be changed. Fetch the block's ID with bitly_get_site. The change is a draft; publish it with bitly_publish_site.

Parameters (3 required, 7 optional)
Required
block_idstring

The unique identifier of the block to update

contentobject

The block's content object, whose shape depends on content_type. Examples: bitlink -> {"bitlink_id":"bit.ly/abc","link_title":"My link"}; social -> {"channel":"instagram","url":"https://instagram.com/me"}; youtubeVideo -> {"video_id":"...","link_title":"..."} (prevalidate first with bitly_prevalidate_site_button); image -> {"image_guid":"...","image_url":"..."}; digital_business_card -> {"layout":"card","first_name":"John","last_name":"Doe","company":"...","job_title":"...","download_enabled":false,"contacts":[{"contact_method":"phone","method_type":"mobile","value":"555-555-1234","sort_order":0},{"contact_method":"website","method_type":"personal","value":"https://example.com/jon","sort_order":1}]} (layout is REQUIRED: one of 'button', 'card', 'inline'; contact fields like phone/email/website/location/note go in the contacts array, NOT as top-level keys; each contact needs a contact_method of phone|email|location|website|note, a method_type (e.g. phone: mobile/home/work/personal/main/fax/office/other; email: work/personal/home/other; website: personal/work/company/homepage/other; location: address/home/work/other), a value, and a unique sort_order that is sequential across contacts; link_title is required only when layout is 'button'); text_block -> {"text":"..."}. The API validates the shape for the given content_type.

site_idstring

The unique identifier of the Bitly Site

Optional
appearanceobject

Optional appearance object; only applies to text_block content (alignment, font_size, colors).

is_activeboolean

Whether the block is active (visible) on the site. When creating a block, this defaults to true if omitted; when updating, omitting it leaves the current state unchanged.

is_pinnedboolean

Whether the block is pinned. Only blocks on the root (no parent container) can be pinned.

parentstring

Optional container block ID to nest this block inside (a grid or carousel created with bitly_create_site_container). Omit to place it at the root.

response_formatstring

'text' (default) or 'json'

schedule_endstring

Optional RFC 3339 timestamp when the block should become inactive.

schedule_startstring

Optional RFC 3339 timestamp when the block should become active.