Bitly is a URL shortening and link management platform that lets organizations create branded short links, generate QR codes, and track engagement across every channel. The Bitly v4 REST API exposes Bitlinks, custom Bitlinks, QR codes, campaigns, channels, groups, organizations, and detailed click and engagement metrics, enabling integrations to programmatically shorten URLs, manage link programs, and ingest performance data for reporting and analytics.
Power end-to-end data operations for your Bitly API with Nexla. Our bi-directional Bitly connector is purpose-built for Bitly, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Bitly or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Bitly workflows fast, secure, and fully governed.
Features
Type: API
SourceDestination
Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
Request optimization with intelligent batching, retry, and caching to minimize API calls and costs
Nexla authenticates to the Bitly v4 REST API using a Bitly API access token (also referred to as a Generic Access Token). The token is passed in the Authorization header of every request as Bearer {token} and grants the same permissions as the Bitly user who generated it.
Generate a personal API access token directly from the Bitly web app. This token is the credential value that Nexla uses to authenticate every API call.
Under the Developer settings section of the settings menu, click API.
In the Access Token section, enter your Bitly account password to verify your identity, and click Generate Token.
Copy the generated token immediately and store it in a secure secret manager. Bitly displays the token value only once at generation time.
The generated token inherits the permissions of the Bitly user who created it and can read and modify any Bitlink, campaign, channel, group, or organization that the user can access in the Bitly UI. Treat the token as a high-privilege secret.
The Bitly API is available on most paid Bitly plans. Specific endpoint availability and rate limits depend on your account plan — for example, branded short domains (BSDs), QR codes, and campaign features require the appropriate Bitly subscription.
Important
The Bitly API access token grants full access to your Bitly account data through the API. Store it in a secure secret manager, never commit it to source control, and rotate it immediately if you suspect it has been exposed. If a token is compromised, return to the API section under Developer settings in Bitly and generate a new token — the previous token can be invalidated from the same screen.
After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.
Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.
Enter your Bitly API access token in the API Key field. This is the token value generated from the API section under Developer settings in Bitly.
Nexla automatically prepends the Bearer prefix when constructing the Authorization header, so paste only the raw token value into this field — do not include the word Bearer or any surrounding whitespace.
Click the Save button at the bottom of the overlay to save the configured credential. Nexla validates the token against the GET /v4/organizations endpoint before saving. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.
To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the desired flow type from the list and click Create, then select the Bitly connector tile, select the credential that will be used to connect to the Bitly instance, and click Next; or, create a new Bitly credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Bitly endpoints. Each template is designed specifically for the corresponding Bitly endpoint. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below — click on an endpoint to see more information about it and how to configure your data source for this endpoint.
Retrieve Bitlinks by Group
This endpoint retrieves a paginated list of Bitlinks belonging to a Bitly group, with optional filters for keyword, hostname, creation date, archival status, campaign or channel assignment, tags, and more. Use it to sync your full Bitlink inventory into a warehouse, build reporting dashboards, or feed downstream systems that operate on link metadata.
Enter the Bitly group GUID in the Group GUID field. This is required. The group GUID can be obtained from the Retrieve Groups endpoint.
Set the Page Size field to control the number of Bitlinks returned per request (Bitly default is 50, maximum 100). Nexla handles pagination automatically using Bitly's search_after token.
Use the Search Query field to filter Bitlinks by keyword in the title or long URL. Use Hostname Path Query to filter by destination domain and path.
Restrict the result set by creation date using the Created Before and Created After fields. Both accept ISO 8601 timestamps (for example, 2026-01-01T00:00:00Z).
Use the Archived Status, Is Expired, Has Expiration, and Has Qr Codes fields (each accepting on, off, or both) to narrow results to specific Bitlink states.
To filter Bitlinks assigned to a specific campaign or channel, populate the Campaign GUID or Channel GUID field with the corresponding identifier from the Retrieve Campaigns or Retrieve Channels endpoints.
Use the Tags field to filter Bitlinks tagged with one or more values (Bitly accepts repeated tags query parameters). The remaining filters — Deeplinks, Domain Deeplinks, Custom Bitlink, Launchpad Ids, and Encoding Login — refine the result further when needed and may be left blank otherwise.
This endpoint is paginated using Bitly's cursor-based search_after token. Nexla follows the cursor automatically and stops when the API returns no further results. For complete filter reference, see the Bitly API reference.
Retrieve Sorted Bitlinks for Group
This endpoint returns the Bitlinks in a group sorted by a performance metric — most commonly clicks. Use it to power leaderboard-style reports of top-performing links or to surface high-traffic Bitlinks for downstream analysis.
Enter the Bitly group GUID in the Group GUID field. This is required.
Enter the metric to sort by in the Sort field. Bitly currently supports clicks.
Optionally narrow the metric window using the Time Unit (minute, hour, day, week, or month), Number of Units (integer; -1 returns the maximum range), and Unit Reference (Unix timestamp anchoring the window — leave blank for "now") fields.
Results are returned as paired arrays — links and sorted_links. The Nexla template uses the sorted_links path so each record includes the Bitlink ID and the metric value used for sorting.
Retrieve a Bitlink
This endpoint retrieves the full metadata for a single Bitlink — including title, long URL, tags, deeplinks, archive status, and timestamps. Use it to enrich an existing dataset of Bitlink IDs with the latest details.
Enter the Bitlink ID in the Bitlink field. This is required and should be supplied in the form bit.ly/abc123 (host + back-half, without the https:// scheme).
This endpoint returns a single object (not an array). The path to data is set to the response root so the Bitlink is treated as the record.
Expand a Bitlink
This endpoint returns the original long URL and basic metadata for a Bitlink without requiring access to the group or organization that owns the link. Use it as a lightweight resolver when you only need the destination URL and creation timestamp.
Enter the Bitlink ID in the Bitlink ID field. This is required and should be supplied in the form bit.ly/abc123.
Unlike Retrieve a Bitlink, this endpoint works for any Bitlink the authenticated user can resolve, even outside the user's group. It does not return tags, archive status, or campaign assignments.
Get Clicks for a Bitlink
This endpoint returns click metrics for a single Bitlink, broken down into time buckets. Use it to build time-series reporting on link engagement.
Enter the Bitlink ID in the Bitlink field. This is required.
Use the Unit field to set the time bucket (minute, hour, day, week, or month).
Use the Units field to set the number of buckets to return. Set to -1 to return all available history.
Use the Unit Reference field to anchor the window to a specific Unix timestamp. Leave blank to anchor to "now".
The response is unwrapped to the link_clicks array, so each record represents a single time bucket with its click count.
Get Bitlink Clicks by Country
This endpoint returns click metrics for a single Bitlink broken down by the country where the click originated. Use it to build geographic engagement reports.
Enter the Bitlink ID in the Bitlink field. This is required.
Use the Unit, Units, and Unit Reference fields to scope the metric window (see Get Clicks for a Bitlink for details).
Each record in the response represents a country (ISO 3166-1 alpha-2 code) and the total click count for that country in the requested window.
Get Bitlink Clicks by Referrer
This endpoint returns click metrics for a single Bitlink broken down by referring domain or URL. Use it to understand which traffic sources drive the most engagement to a given short link.
Enter the Bitlink ID in the Bitlink field. This is required.
Use the Unit, Units, and Unit Reference fields to scope the metric window.
Referrers reported by Bitly include the originating domain (for example, twitter.com) and a small set of canonical labels such as direct when no referrer was sent by the client.
Get Engagement Counts for a Bitlink
This endpoint returns engagement metrics for a single Bitlink — including scans of any QR codes generated from it — broken down into time buckets. Use it when QR-code engagement is part of the analytics you need to ingest.
Enter the Bitlink ID in the Bitlink field. This is required.
Use the Unit, Units, and Unit Reference fields to scope the metric window.
Engagement counts include both web clicks and QR-code scans. To analyze them separately, also ingest the Get Clicks for a Bitlink endpoint and compute the QR-scan delta downstream.
Get QR Code
This endpoint returns the QR-code metadata and image data associated with a Bitlink. Use it to retrieve the rendered QR for embedding in downstream collateral or asset stores.
Enter the Bitlink ID in the Bitlink field. This is required.
The response includes the Bitlink, a base64-encoded image payload, and the QR's customization settings. For QR-specific lifecycle operations, use the Create a QR Code destination endpoint.
Retrieve Campaigns
This endpoint returns all campaigns for a Bitly group. Use it to sync the campaign catalog to a warehouse or to drive downstream lookups by campaign name or GUID.
Optionally populate the Group GUID field to scope results to a single group. When omitted, Bitly returns campaigns for all accessible groups.
Campaigns organize Bitlinks and channels for reporting. Each record includes the campaign name, GUID, group GUID, and the list of channels assigned to the campaign.
Get Campaign
This endpoint returns full details for a single campaign by GUID. Use it to enrich an existing dataset of campaign GUIDs with the latest configuration.
Enter the campaign GUID in the Campaign GUID field. This is required and can be obtained from the Retrieve Campaigns endpoint.
Retrieve Channels
This endpoint returns the channels (Bitlink groupings used inside campaigns) defined in your Bitly account. Use it to sync the channel taxonomy into a warehouse or to power channel-level reporting.
Optionally populate the Group GUID field to scope results to a single group, or the Campaign GUID field to scope results to a single campaign. Both filters can be combined.
Get Channel
This endpoint returns full details for a single channel by GUID, including the list of Bitlinks assigned to the channel.
Enter the channel GUID in the Channel GUID field. This is required and can be obtained from the Retrieve Channels endpoint.
Retrieve Groups
This endpoint returns the Bitly groups associated with an organization. Groups are the access-control boundary for Bitlinks in Bitly, so this endpoint is typically the first call when bootstrapping a Bitly integration — its results provide the Group GUID values required by most other endpoints.
Optionally populate the Organization GUID field to scope results to a single organization. When omitted, Bitly returns all groups the authenticated user can access.
Each record includes the group name, GUID, organization GUID, the list of branded short domains (BSDs) attached to the group, and the role of the authenticated user.
Get Group
This endpoint returns full details for a single group by GUID.
Enter the group GUID in the Group GUID field. This is required and can be obtained from the Retrieve Groups endpoint.
Get Group Preferences
This endpoint returns the preferences configured for a group — including the default branded short domain (BSD) and other group-level link defaults.
Enter the group GUID in the Group GUID field. This is required.
Get Group Shorten Counts
This endpoint returns time-bucketed counts of how many Bitlinks were created by a group. Use it to monitor link-creation velocity per team or business unit.
Enter the group GUID in the Group GUID field. This is required.
The response is unwrapped to the metrics array, so each record represents a single time bucket with the shorten count for that bucket.
Retrieve Organizations
This endpoint returns all organizations the authenticated user belongs to. Use it as the starting point when discovering the full hierarchy (organizations → groups → Bitlinks).
Set the Include All field to true to include organizations the user has been invited to but has not yet joined, or leave it blank to return only joined organizations.
Get Organization
This endpoint returns full details for a single organization by GUID, including the subscription tier.
Enter the organization GUID in the Organization GUID field. This is required and can be obtained from the Retrieve Organizations endpoint.
Get Organization Shorten Counts
This endpoint returns time-bucketed counts of how many Bitlinks were created across an entire organization. Use it to monitor link-creation activity at the company level.
Enter the organization GUID in the Organization GUID field. This is required.
The response is unwrapped to the metrics array so each record represents a single time bucket with the shorten count for that bucket.
List BSD Records
This endpoint returns the list of Branded Short Domains (BSDs) available to the authenticated account. Use it to keep a downstream lookup of available short domains in sync with Bitly.
No parameters are required. Nexla pages through the response automatically using offset-based pagination.
BSDs are custom short domains (for example, brand.ly) configured for an organization. They are the host portion of any custom Bitlink and require the appropriate Bitly plan.
Get User
This endpoint returns the profile of the user who issued the access token — including login, name, email, default group GUID, and the list of organizations the user belongs to.
No parameters are required. The endpoint always returns the profile of the authenticated user.
Use this endpoint as a quick sanity check when configuring a new credential, or to capture the default group GUID for downstream calls without first listing groups.
Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.
Bitly data sources can also be manually configured to ingest data from any valid Bitly v4 API endpoint not covered by the pre-built templates, including sources that chain calls across organizations, groups, and Bitlinks. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.
All Bitly v4 endpoints are rooted at https://api-ssl.bitly.com/v4/ — for example, https://api-ssl.bitly.com/v4/groups/{group_guid}/bitlinks returns the Bitlinks in a group. Bitly responses typically wrap the returned collection in a top-level key, so set the path to data accordingly — for example, $.links[*] for a list of Bitlinks or $.metrics[*] for time-bucketed metrics. You do not need to add an Authorization header; Nexla injects Authorization: Bearer {token} automatically from the credential.
Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Bitly data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.
Click the + icon on the Nexset that will be sent to the Bitly destination, and select the Send to Destination option from the menu. Select the Bitly connector from the list of available destination connectors, then select the credential that will be used to connect to the Bitly account, and click Next; or, create a new Bitly credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Bitly endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.
Shorten a Link
This endpoint shortens a long URL into a Bitlink. Use it as the fastest way to create Bitlinks at volume — for example, generating short links for every record in an upstream marketing list. It is functionally simpler than Create a Bitlink and is recommended when you only need a back-half and no advanced metadata.
Each record in the upstream Nexset must include a long_url attribute pointing to the destination URL. Optional attributes include domain (the BSD to use, for example bit.ly) and group_guid (the Bitly group that will own the link — defaults to the user's default group).
The full record is sent as the JSON body of the POST /v4/shorten call. Use the Nexla transform layer to shape upstream attributes into the field names expected by Bitly.
When no group_guid is supplied, Bitly creates the link in the access token owner's default group. To target a specific group, first call the Retrieve Groups source endpoint and route the GUID through a transform.
Create a Bitlink
This endpoint creates a Bitlink with the full set of optional metadata — title, tags, deeplinks, expiration, group, campaign, and channel assignments. Use it when you need to provision Bitlinks that participate in campaign reporting or carry rich metadata.
Each record in the upstream Nexset must include a long_url attribute. Recommended optional fields include title, tags (array of strings), deeplinks, group_guid, campaign_guid, and channel_guids.
The full record is sent as the JSON body of the POST /v4/bitlinks call.
Campaign and channel assignments require GUIDs from the Retrieve Campaigns and Retrieve Channels source endpoints. For complete payload reference, see the Bitly Create Bitlink documentation.
Add Custom Bitlink
This endpoint creates a custom Bitlink — a Bitlink with a chosen back-half on a branded short domain (BSD). Use it to programmatically provision branded links (for example, brand.ly/promo-2026).
Each record in the upstream Nexset must include custom_bitlink (the full custom URL, including the BSD host) and bitlink_id (the existing Bitlink that the custom URL should resolve to).
The full record is sent as the JSON body of the POST /v4/custom_bitlinks call.
Custom Bitlinks require a Bitly plan that includes a Branded Short Domain. Use the List BSD Records source endpoint to discover available BSDs before populating custom_bitlink values.
Update a Bitlink
This endpoint updates the editable metadata of an existing Bitlink — title, tags, archive status, deeplinks, and expiration. Use it to keep Bitlink metadata synchronized with an upstream system of record.
Enter the Bitlink ID in the Bitlink field. The default value is {'{{id}}'}, which substitutes the id attribute from each upstream record — so the destination can be driven directly by a Retrieve Bitlinks by Group source.
The body of each PATCH call is the upstream record (as JSON). Include only the fields that should be changed; omitted fields are left untouched.
This endpoint cannot change the Bitlink's long_url. To repoint a Bitlink to a different destination, create a new Bitlink or update the associated custom Bitlink with Update Custom Bitlink.
Update Custom Bitlink
This endpoint updates the Bitlink that an existing custom Bitlink resolves to. Use it to repoint a branded URL (for example, brand.ly/promo) to a new destination without changing the public-facing short link.
Enter the custom Bitlink in the Custom Bitlink field (for example, brand.ly/promo). This is required.
The body of each PATCH call must include a bitlink_id field with the target Bitlink to resolve to.
Delete a Bitlink
This endpoint archives (soft-deletes) a Bitlink. Archived Bitlinks stop tracking new clicks but remain in the account so historical metrics are preserved.
Enter the Bitlink ID in the Bitlink field. The default value is {'{{id}}'}, which substitutes the id attribute from each upstream record. This is required.
This call sends a DELETE with no body.
Archiving is reversible — the same Bitlink can be unarchived later by sending a PATCH through the Update a Bitlink endpoint with archived: false.
Create a QR Code
This endpoint creates a new dynamic QR code, optionally with customization (color, frame, logo) and expiration. Use it to programmatically generate QR codes for print collateral, point-of-sale assets, or campaign deployments.
Each record in the upstream Nexset must include the fields required to create a QR — at minimum a long_url (or an existing bitlink_id to link to). Optional fields cover the QR's style and customization options.
The full record is sent as the JSON body of the POST /v4/qr-codes call.
QR codes are dynamic — their destination can be updated later through the Bitly UI without reprinting the code. For style options, see the Bitly QR-code documentation.
Create Campaign
This endpoint creates a new Bitly campaign within a group. Use it to programmatically scaffold campaign records from an upstream marketing-planning system so links and reporting are organized from day one.
Each record in the upstream Nexset must include a name (campaign name) and group_guid (the group the campaign belongs to). Optional fields include description and an array of channel_guids to assign existing channels to the campaign.
The full record is sent as the JSON body of the POST /v4/campaigns call.
Update Campaign
This endpoint updates an existing campaign's name, description, group, or channel assignments. Use it to keep Bitly campaign metadata aligned with an upstream campaign-management system.
Enter the campaign GUID in the Campaign GUID field. The default value is {'{{guid}}'}, which substitutes the guid attribute from each upstream record. This is required.
The body of each PATCH call is the upstream record (as JSON). Include only the fields that should be changed; omitted fields are left untouched.
Create Channel
This endpoint creates a new channel — a logical grouping of Bitlinks within a campaign. Use it to programmatically scaffold channels alongside campaigns when bootstrapping a new marketing program in Bitly.
Each record in the upstream Nexset must include a name (channel name) and group_guid. Optional fields include description, guids (array of Bitlink IDs to assign to the channel), and campaign_guid to attach the channel to an existing campaign.
The full record is sent as the JSON body of the POST /v4/channels call.
Update Channel
This endpoint updates an existing channel's name, Bitlink assignments, or campaign association.
Enter the channel GUID in the Channel GUID field. The default value is {'{{guid}}'}, which substitutes the guid attribute from each upstream record. This is required.
The body of each PATCH call is the upstream record (as JSON). Include only the fields that should be changed.
Update Group
This endpoint updates a Bitly group's name or assigned Branded Short Domains (BSDs).
Enter the group GUID in the Group GUID field. The default value is {'{{guid}}'}, which substitutes the guid attribute from each upstream record. This is required.
The body of each PATCH call is the upstream record (as JSON). Include only the fields that should be changed.
Update Group Preferences
This endpoint updates the preferences (for example, default BSD) configured for a group. Use it to centrally enforce that all new Bitlinks created by a team use a specific branded short domain.
Enter the group GUID in the Group GUID field. The default value is {'{{guid}}'}, which substitutes the guid attribute from each upstream record. This is required.
The body of each PATCH call is the upstream record (as JSON). Include the preferences fields that should be changed.
Update User
This endpoint updates the authenticated user's profile — name, default group GUID, and other personal preferences.
No path parameters are required. The endpoint always updates the user associated with the access token.
The body of each PATCH call is the upstream record (as JSON). Include only the fields that should be changed.
Because this endpoint operates on the authenticated user, route only the records that represent that user's profile into this destination — typically a single-row Nexset.
Bitly destinations can also be manually configured to send data to any valid Bitly v4 API endpoint not included in the pre-built templates. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.
All Bitly v4 endpoints are rooted at https://api-ssl.bitly.com/v4/, and the API expects application/json request bodies. Bitly v4 uses POST for creation, PATCH for partial updates, and DELETE for archiving Bitlinks — for update or delete operations, include the resource identifier at the end of the URL, using substitution placeholders like {'{{id}}'} or {'{{guid}}'} to pull the identifier from each upstream record. You do not need to add an Authorization header; Nexla injects Authorization: Bearer {token} automatically from the credential. Most Bitly write endpoints accept a single resource per call and do not support batch payloads, so leave record batching disabled unless the target endpoint accepts an array of records.
Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to Bitly, open the destination resource menu, and select Activate.
The Nexset data will not be sent to Bitly until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.