URL Shorteners — entry 002 of 14

Bitly

Verified Jul 2026

Bitly is one of the oldest and most widely used link-management platforms, shortening URLs to bit.ly links and tracking clicks, geography, referrers, and campaigns. Its v4 REST API authenticates with an OAuth 2.0 access token and covers link creation, custom back-halves, QR codes, and analytics, returning JSON. A limited free tier exists, with paid Core and Enterprise plans unlocking higher volumes, branded domains, and deeper metrics.

url-shortenerlink-managementanalyticsoauthqr-codes
AuthenticationOAuthRequires an OAuth flow; expect app registration.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreemiumA usable free tier exists, with paid plans for more volume.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score74out of 100
Authentication8/25OAuth flow required
Pricing17/20Freemium tier available
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 74 on greatapis.com
<a href="https://greatapis.com/api/bitly/"><img src="https://greatapis.com/badge/bitly.svg" alt="Scored 74 on greatapis.com"></a>

Auth quickstart

  1. Register an app / run the OAuth flow to obtain a bearer token.
  2. Send it as an Authorization headerAuthorization: Bearer <token>
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://api-ssl.bitly.com/v4
Auth
bearerAuth
Groups28

Groups are subdivisions within organizations. Every user will be in at least one group, and every shortened link will be in one group. Most actions on our API will be on behalf of a group. For example, when you shorten a link, it will be on behalf of a user and a group.

GET/groupsRetrieve Groups
Responses
StatusDescriptionSchema
200SUCCESSGroups
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}Retrieve a Group
Responses
StatusDescriptionSchema
200SUCCESSGroup
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
PATCH/groups/{group_guid}Update a Group
Request body

application/jsonGroupUpdate (required)

Responses
StatusDescriptionSchema
200SUCCESSGroup
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/citiesGet Click Metrics for a Group by City
Responses
StatusDescriptionSchema
200SUCCESSCityMetrics
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/clicksGet clicks by group
Responses
StatusDescriptionSchema
200SUCCESSGroupClicks
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/codes/scans/citiesGet Scan Metrics for a Group by City
Responses
StatusDescriptionSchema
200SUCCESSCityMetrics
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/codes/scans/countriesGet Scan Metrics for a Group by Country
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/codes/scans/over_timeGet Scan Metrics for a Group Over Time
Responses
StatusDescriptionSchema
200SUCCESSGroupClicks
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/codes/scans/topGet Top Performing QR Codes for a Group
Parameters
NameInRequiredType
decoupledquerynoboolean
Responses
StatusDescriptionSchema
200SUCCESS
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/countriesGet Click Metrics for a Group by Country
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/devicesGet Click Metrics for a Group by Device Type
Responses
StatusDescriptionSchema
200SUCCESSDeviceMetrics
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/engagements/over_timeGet Group Metrics Over Time
Responses
StatusDescriptionSchema
200SUCCESSGroupClicks
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/engagements/topGet Group Top Performing Links by Engagement
Responses
StatusDescriptionSchema
200SUCCESSSortedLinks
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
POST/groups/{group_guid}/exportsCreate an inline CSV export for a group
Request body

application/jsonGroupExportRequestBody (required)

Responses
StatusDescriptionSchema
200OKGroupExportResponse
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
422UNPROCESSABLE_ENTITYUnprocessableEntity
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/feature_usageGet limit usage for a group
Responses
StatusDescriptionSchema
200SUCCESSGroupFeatureUsage
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
GET/groups/{group_guid}/historical_usageGet historical usage for a group
Responses
StatusDescriptionSchema
200SUCCESSGroupHistoricalUsage
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
GET/groups/{group_guid}/links/clicks/citiesGet Group Link Clicks by City
Responses
StatusDescriptionSchema
200SUCCESSCityMetrics
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/links/clicks/countriesGet Group Link Clicks by Country
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/links/clicks/devicesGet Group Link Clicks by Device
Responses
StatusDescriptionSchema
200SUCCESS
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/links/clicks/over_timeGet Group Link Clicks Over Time
Responses
StatusDescriptionSchema
200SUCCESSGroupClicks
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/links/clicks/referrersGet Group Link Clicks by Referrer
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/links/clicks/topGet Group Top Performing Links by Click
Responses
StatusDescriptionSchema
200SUCCESSSortedLinks
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/preferencesRetrieve Group Preferences
Responses
StatusDescriptionSchema
200SUCCESSGroupPreferences
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
PATCH/groups/{group_guid}/preferencesUpdate Group Preferences
Request body

application/jsonGroupPreferences (required)

Responses
StatusDescriptionSchema
200SUCCESSGroupPreferences
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/referrersGet Click Metrics for a Group by Referrer
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/referring_networksGet Click Metrics for a Group by Referring Networks
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/shorten_countsRetrieve Group Shorten Counts
Responses
StatusDescriptionSchema
200SUCCESSMetrics
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/tagsRetrieve Tags by Group
Responses
StatusDescriptionSchema
200SUCCESSTags
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
Organizations5

Organizations are equivalent to a Bitly account. Every plan limit, group, and user is tied to an organization.

GET/organizationsRetrieve Organizations
Parameters
NameInRequiredType
include_allquerynoboolean
Responses
StatusDescriptionSchema
200SUCCESSOrganizations
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/organizations/{organization_guid}Retrieve an Organization
Responses
StatusDescriptionSchema
200SUCCESSOrganization
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/organizations/{organization_guid}/plan_limitsGet Plan Limits
Responses
StatusDescriptionSchema
200SUCCESSPlanLimits
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/organizations/{organization_guid}/shorten_countsGet Shorten Counts for an Organization
Responses
StatusDescriptionSchema
200SUCCESSMetrics
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/organizations/{organization_guid}/shorten_counts_by_groupGet Shorten Counts for an Organization by Group
Responses
StatusDescriptionSchema
200SUCCESSMetrics
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
User3

Some subscription plans allow multiple users. Only one user is used for authenticating a call, and these operations apply only to the authenticated user.

GET/userRetrieve a User
Responses
StatusDescriptionSchema
200SUCCESSUser
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
PATCH/userUpdate a User
Request body

application/jsonUserUpdate (required)

Responses
StatusDescriptionSchema
200SUCCESSUser
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/user/platform_limitsGet Platform Limits
Responses
StatusDescriptionSchema
200SUCCESSPlatformLimits
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
BSDs1

Branded short domains (BSDs) are the custom domains used to brand your links. A BSD can be added to a Bitly organization and may be assigned to one or more groups. They can contain up to 32 characters.

GET/bsdsGet BSDs
Responses
StatusDescriptionSchema
200SUCCESSBSDsResponse
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
Bitlinks21

Bitlinks are shortened links. They could begin with the bit.ly domain or your own custom branded short domain (BSD). **Related Operations:** - [POST /bitlinks](#createFullBitlink) - Create a new bitlink or add a custom keyword to an existing bitlink - [PATCH /bitlinks/{bitlink}](#updateBitlink) - Redirect an existing bitlink

POST/bitlinksCreate a Bitlink
Request body

application/jsonFullShorten (required)

Responses
StatusDescriptionSchema
200SUCCESSBitlinkBody
201CREATEDBitlinkBody
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
417EXPECTATION_FAILEDExpectationFailed
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}Retrieve a Bitlink
Responses
StatusDescriptionSchema
200SUCCESSBitlinkBody
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
PATCH/bitlinks/{bitlink}Update a Bitlink
Request body

application/jsonBitlinkUpdateBody (required)

Responses
StatusDescriptionSchema
200SUCCESSBitlinkBody
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
409CONFLICTConflict
410GONEGone
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
DELETE/bitlinks/{bitlink}Delete a Bitlink
Responses
StatusDescriptionSchema
200SUCCESSLinkDeletionResponse
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/citiesGet Metrics for a Bitlink by City
Responses
StatusDescriptionSchema
200SUCCESSCityMetrics
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/clicksGet Clicks for a Bitlink
Responses
StatusDescriptionSchema
200SUCCESSClicks
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/clicks/summaryGet a Clicks Summary for a Bitlink
Responses
StatusDescriptionSchema
200SUCCESSClicksSummary
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/countriesGet Metrics for a Bitlink by Country
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/devicesGet Metrics for a Bitlink by Device Type
Responses
StatusDescriptionSchema
200SUCCESSDeviceMetrics
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/engagementsGet Engagement Counts for a Bitlink
Responses
StatusDescriptionSchema
200SUCCESSTotalEngagements
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/engagements/summaryGet an Engagement Count Summary for a Bitlink
Responses
StatusDescriptionSchema
200SUCCESSTotalEngagementsSummary
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/referrer_nameGet Metrics for a Bitlink by Referrer Name
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/referrersGet Metrics for a Bitlink by Referrers
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/referrers_by_domainsGet Metrics for a Bitlink by Referrers by Domain
Responses
StatusDescriptionSchema
200SUCCESSReferrersByDomains
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/bitlinks/{bitlink}/referring_domainsGet Metrics for a Bitlink by Referring Domains
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
POST/expandExpand a Bitlink
Request body

application/jsonExpandBitlink (required)

Responses
StatusDescriptionSchema
200SUCCESSExpandedBitlink
400BAD_REQUESTBadRequest
404NOT_FOUNDNotFound
410GONEGone
422UNPROCESSABLE_ENTITYUnprocessableEntity
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/bitlinksRetrieve Bitlinks by Group
Responses
StatusDescriptionSchema
200SUCCESSBitlinks
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
PATCH/groups/{group_guid}/bitlinksBulk update bitlinks
Request body

application/jsonBulkUpdateRequest (required)

Responses
StatusDescriptionSchema
200SUCCESSBulkUpdate
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/bitlinks/{sort}Retrieve Sorted Bitlinks for Group
Responses
StatusDescriptionSchema
200SUCCESSSortedLinks
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/groups/{group_guid}/engagements/sorted/topRetrieve Top Links and Decoupled QR Codes by Engagements
Responses
StatusDescriptionSchema
200SUCCESSTopLinksAndQRCodes
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
POST/shortenShorten a Link
Request body

application/jsonShorten (required)

Responses
StatusDescriptionSchema
200SUCCESSShortenBitlinkBody
201CREATEDShortenBitlinkBody
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
417EXPECTATION_FAILEDExpectationFailed
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
Custom Bitlinks5

These endpoints are for updating custom Bitlinks only. Custom Bitlinks have both a BSD and a customized back-half (e.g., yourcompany.com/yourcampaign). If a link begins with the bit.ly domain or ends with an auto-generated random string it is not a custom Bitlink.

POST/custom_bitlinksAdd Custom Bitlink
Request body

application/jsonAddCustomBitlink (required)

Responses
StatusDescriptionSchema
200SUCCESSCustomBitlink
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
409ConflictError
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/custom_bitlinks/{custom_bitlink}Retrieve Custom Bitlink
Responses
StatusDescriptionSchema
200SUCCESSCustomBitlink
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
PATCH/custom_bitlinks/{custom_bitlink}Update Custom Bitlink
Request body

application/jsonUpdateCustomBitlink (required)

Responses
StatusDescriptionSchema
200SUCCESSCustomBitlink
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/custom_bitlinks/{custom_bitlink}/clicksGet Clicks for a Custom Bitlink's Entire History
Responses
StatusDescriptionSchema
200SUCCESSClicks
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/custom_bitlinks/{custom_bitlink}/clicks_by_destinationGet Metrics for a Custom Bitlink by Destination
Responses
StatusDescriptionSchema
200SUCCESSClickMetrics
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
Campaigns8

Bitly Campaigns are used to build and organize links and metrics for marketing campaigns.

GET/campaignsRetrieve Campaigns
Responses
StatusDescriptionSchema
200SUCCESSCampaigns
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
502BAD_GATEWAYBadGateway
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
POST/campaignsCreate Campaign
Request body

application/jsonCampaignModify (required)

Responses
StatusDescriptionSchema
200SUCCESSCampaign
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/campaigns/{campaign_guid}Retrieve a Campaign
Responses
StatusDescriptionSchema
200SUCCESSCampaign
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
PATCH/campaigns/{campaign_guid}Update Campaign
Request body

application/jsonCampaignModify (required)

Responses
StatusDescriptionSchema
200SUCCESSCampaign
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/channelsRetrieve Channels
Responses
StatusDescriptionSchema
200SUCCESSChannels
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
POST/channelsCreate Channel
Request body

application/jsonChannelModify (required)

Responses
StatusDescriptionSchema
200SUCCESSChannel
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/channels/{channel_guid}Get a Channel
Responses
StatusDescriptionSchema
200SUCCESSChannel
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
PATCH/channels/{channel_guid}Update a Channel
Request body

application/jsonChannelModify (required)

Responses
StatusDescriptionSchema
200SUCCESSChannel
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
Webhooks6

Webhooks are a method of sending information from Bitly to an application outside of Bitly. It's a way to automate actions or updates between two different systems. These endpoints are for configuring your webhooks.

GET/organizations/{organization_guid}/webhooksGet Webhooks
Responses
StatusDescriptionSchema
200SUCCESSWebhooks
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
POST/webhooksCreate Webhook
Request body

application/jsonWebhookCreate (required)

Responses
StatusDescriptionSchema
201CREATEDWebhook
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/webhooks/{webhook_guid}Retrieve Webhook
Responses
StatusDescriptionSchema
200SUCCESSWebhook
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
PATCH/webhooks/{webhook_guid}Update Webhook
Request body

application/jsonWebhookUpdate (required)

Responses
StatusDescriptionSchema
200SUCCESSWebhook
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
DELETE/webhooks/{webhook_guid}Delete Webhook
Responses
StatusDescriptionSchema
204SUCCESS
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
POST/webhooks/{webhook_guid}/verifyVerify Webhook
Responses
StatusDescriptionSchema
200SUCCESSWebhook
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
QR Codes16

QR codes can be created and customized with different dot patterns, corner shapes, colors, and more. They can contain bitlinks, links to microsites, or several kinds of static data.

GET/groups/{group_guid}/qr-codesRetrieve QR Codes by Group
Responses
StatusDescriptionSchema
200SUCCESSQRCodesMinimal
403FORBIDDENForbidden
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
PATCH/groups/{group_guid}/qr-codesBulk update QR codes
Request body

application/jsonQRCBulkUpdateRequest (required)

Responses
StatusDescriptionSchema
200SUCCESSQRCBulkUpdate
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
POST/qr-codesCreate a QR Code
Request body

application/jsonPublicCreateQRCodeRequest (required)

Responses
StatusDescriptionSchema
201CREATEDQRCodeMinimal
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
POST/qr-codes/staticGenerate a static QR Code image
Parameters
NameInRequiredType
Acceptheadernostring
formatquerynostring
Request body

application/jsonPublicCreateStaticQRCodeRequest (required)

Responses
StatusDescriptionSchema
200SUCCESSPublicStaticQRCodeResponse
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
406NOT_ACCEPTABLEBadRequest
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
GET/qr-codes/{qrcode_id}Retrieve a QR Code
Responses
StatusDescriptionSchema
200SUCCESSQRCodeDetails
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
PATCH/qr-codes/{qrcode_id}Update a QR Code
Parameters
NameInRequiredType
qrcode_idpathyesstring
Request body

application/jsonPublicUpdateQRCodeRequest

Responses
StatusDescriptionSchema
200SUCCESSQRCodeMinimal
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
DELETE/qr-codes/{qrcode_id}Delete a QR Code
Responses
StatusDescriptionSchema
200SUCCESSPublicDeleteQRCodeResponse
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
GET/qr-codes/{qrcode_id}/imageRetrieve a QR Code image
Parameters
NameInRequiredType
Acceptheadernostring
formatquerynostring
Responses
StatusDescriptionSchema
200SUCCESSPublicQRCodeImageResponse
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
PATCH/qr-codes/{qrcode_id}/redirectRedirect a QR Code
Parameters
NameInRequiredType
qrcode_idpathyesstring
Request body

application/jsonRedirectQRCodeRequest (required)

Responses
StatusDescriptionSchema
200SUCCESSQRCodeMinimal
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
422UNPROCESSABLE_ENTITYUnprocessableEntity
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
GET/qr-codes/{qrcode_id}/scansGet Scans for a QR Code
Responses
StatusDescriptionSchema
200SUCCESSBitlinkScans
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/qr-codes/{qrcode_id}/scans/browsersGet Scans for a QR Code by Browser
Responses
StatusDescriptionSchema
200SUCCESSScanMetrics
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/qr-codes/{qrcode_id}/scans/citiesGet Metrics for a QR Code by City
Responses
StatusDescriptionSchema
200SUCCESSCityScanMetrics
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/qr-codes/{qrcode_id}/scans/countriesGet Scans for a QR Code by Country
Responses
StatusDescriptionSchema
200SUCCESSScanMetrics
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/qr-codes/{qrcode_id}/scans/device_osGet Scans for a QR Code by Device OS
Responses
StatusDescriptionSchema
200SUCCESSScanMetrics
400BAD_REQUESTBadRequest
402UPGRADE_REQUIREDUpgradeRequired
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
GET/qr-codes/{qrcode_id}/scans/summaryGet Scans Summary for a QR Code
Responses
StatusDescriptionSchema
200SUCCESSBitlinkScansSummary
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
410GONEGone
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable
PUT/qr-codes/{qrcode_id}/to-bitlinkUpgrade a QR Code to a bitlink
Parameters
NameInRequiredType
qrcode_idpathyesstring
Responses
StatusDescriptionSchema
200SUCCESSBitlinkBody
400BAD_REQUESTBadRequest
403FORBIDDENForbidden
404NOT_FOUNDNotFound
429MONTHLY_LIMIT_EXCEEDEDMonthlyLimitExceeded
500INTERNAL_ERRORInternalError
apps1
GET/apps/{client_id}Retrieve OAuth App
Responses
StatusDescriptionSchema
200SUCCESSOAuthApp
403FORBIDDENForbidden
404NOT_FOUNDNotFound
500INTERNAL_ERRORInternalError
503TEMPORARILY_UNAVAILABLETemporarilyUnavailable

Try it

Developer reference

Base URLhttps://api-ssl.bitly.com/v4
Rate limit

Per-hour and per-minute caps reset independently, with the minute cap set to one-tenth of the hourly figure; standard plans default to 1,000 requests/hour (100/min) per endpoint, Enterprise plans 10,000/hour, plus separate monthly transaction limits by plan and a 5-concurrent-connection cap per IP. Exceeding a cap returns HTTP 429 with a RATE_LIMIT_EXCEEDED or MONTHLY_LIMIT_EXCEEDED error.

Key endpoints
  • POST/shorten
  • POST/expand
  • GET/bitlinks/{bitlink}/clicks/summary