Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/bharti-airtel-inventory-management-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: '1.0'
title: Airtel IoT Inventory Management API
contact:
email: m2m.support@airtel.com
description: "# Overview\n ## Introduction\n <div class=\"iot-intro\">Airtel IoT Developer Portal showcases APIs that allows you\n to access data of the CMP Billable account from any external application. Using the APIs, you\n can perform almost all the operations that you perform through the CMP portal including Managing\n SIM Inventory, Changing SIM state (Test Mode, Activate, Change Plan, Safe custody), Monitoring\n data usage, Performing bulk operations and so on.</div>\n \n In this section, you’ll learn Airtel IoT Developer Portal Dashboard.\n\n ## API Credentials\n This section provide static details of Customer which will be used for accessing APIs.\n\n \n <div class=\"bullet-list\"> Key Authentication </div>\n <div class=\"bullet-list-content\" > A Unique Identification Secret Key per Customer, must be passed in Headers while calling API and will be used for Authentication purpose.</div>\n \n\n <div class=\"bullet-list\" > Customer Information </div>\n <div class=\"bullet-list-content\" > Customer Information will show details of Customer Developer Account. This shows Customer Id, Customer Account No, Email Id, iv-user, Name, Developer Created By and Developer Created On. Some of these information will be used in accessing APIs.</div>\n\n\n <div class=\"bullet-list\" > OAuth2.0 </div>\n <div class=\"bullet-list-content\" > Customer has to use unique Client Id and Client Secret mentioned in OAuth Credential table for Authentication of APIs.</div>\n \n\n ## Usage Information\n This section provide Customer API usages details. This can show details based on different timestamps: \n \n ## Activating your first SIM \n\n <div id=\"auth-2.0-page\" ><section class=\"kong-doc\"><h2>Generating OAuth 2.0 token</h2> <p>\n The OAuth 2.0 authorization code grant will be used by customer to gain access to protected\n resources, such as APIs.\n This set of APIs shall allow user to generate Access Token and refresh Access Token to perform\n any action on CMP via the API gateway.\n </p> <h2><a id=\"Request_an_Access_Token_0\"></a>Request an Access Token</h2> <p>To get a token by using the client Id & Client Secret, send a POST request to the <code>/developer/generate/authtoken</code></p> <h1><a id=\"auth-request\"></a>Sample Request</h1> <pre><code>curl -X POST \"https://openapi.airtel.in/iot/api/developer/generate/authtoken\"\n -H \"accept: application/json\"\n -H \"apikey: XXXXXXXXXXXXXXXXXXXXXX\"\n -H \"iv-user: XXXXXXXXXXXXXXXXXXXXXX\"\n -H \"Content-Type: application/x-www-form-urlencoded\"\n -d \"client_id=XXXXXXXXXXXXXXXXXXXXXX&client_secret=XXXXXXXXXXXXXXXXXXXXXX\"\n </code></pre> <h1><a id=\"auth-response\"></a>Sample Response</h1> <pre><code>{\n \"data\": {\n \"refresh_token\": \"XXXXXXXXXXXXXXXXXXXXXX\",\n \"token_type\": \"bearer\",\n \"access_token\": \"XXXXXXXXXXXXXXXXXXXXXX\",\n \"expires_in\": 1800\n }\n }\n </code></pre> You can generate same request response from Airtel IoT Developer Portal. To do so :\n <ul><li>Navigate to <em>Documentation</em> → <em>Account Authorization</em> → <em>Generate Access Token</em> → <em>Test Endpoint</em></li> <li>Put values of <strong>apikey</strong>, <strong>client_id</strong>, <strong>client_secret</strong>, <strong>iv-user</strong> in mentioned text fields from Dashboard</li> <li><strong>Make API Call</strong>.</li></ul></section></div>\n\n <div id=\"sim-inventory-page\" ><section class=\"kong-doc\"><h1>Fetch SIM Inventory</h1> <p>\n This API shall allow user to fetch the details of SIMs on that Customer\n Account. It can fetch the details of one or more SIMs at a time.\n </p> <h1><a id=\"sim-inventory-request\"></a>Sample Request</h1> \n <pre><code>curl -X GET \"https://openapi.airtel.in/iot/api/customer/details/basket/0/sims\n ?pageNo=1&pageSize=1&simStatus=INITIAL\"\n -H \"accept: application/json\"\n -H \"Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXX\"\n -H \"apikey: XXXXXXXXXXXXXXXXXXXXXX\"\n -H \"customer-id: XXXX\"\n -H \"iv-user: XXXXXXXXXXXXXXXXXXXXXX\"\n </code></pre> <h1><a id=\"sim-inventory-response\"></a>Sample Response</h1> <pre><code>{\n \"data\":\n {\n \"sims\": [\n {\n \"simId\": \"5165173\",\n \"mobileNo\": \"51967694502\",\n \"simNo\": \"9999000000000000000\",\n \"imsi\": \"30811010404043400\",\n \"lsi\": \" \",\n \"status\": \"INITIAL\",\n \"isPaired\": \"0\",\n \"isPrepaidSim\": \"0\",\n \"circleName\": \"DELHI\",\n \"planCode\": \"M2M_PLN_0324\",\n \"planName\": \"VTS 49 special plan(without voice with sms)\",\n \"description\": \"VTS 49 special plan(without voice with sms)\",\n \"dataType\": \"2G\",\n \"dataUnits\": \"250\",\n \"planType\": \"0\"\n }\n ],\n \"total\": \"10000\"\n }\n }\n </code></pre> \n You can generate same request response from Airtel IoT Developer Portal. To do so :\n <ul><li>Navigate to <em>Documentation</em> → <em>Manage SIMs</em> → <em>Fetch SIMs</em> → <em>Test Endpoint</em></li> <li>Replace Bearer Token from access token generated from\n <a id=\"go-to-auth\" class=\"nav-link\">Generating OAuth 2.0 token</a></li><li>Put values of <strong>apikey</strong>, <strong>iv-user</strong> & <strong>customer-id</strong> in mentioned text fields from Dashboard.</li> <li>Select <strong>simStatus</strong> as <strong>INITIAL</strong></li> <li><strong>Make API Call</strong>.</li></ul></section></div>\n \n <div ><section class=\"kong-doc\"><h1 id=\"fetch-plans-page\">Fetch Plans</h1> <p>\n This API shall allow user to fetch the details of Plans that are associated with the Customer\n Account. It returns the Plan code, plan name, plan description and whether it is a test plan or\n actual plan as defined on the account.\n </p> <h1 id=\"fetchPlans-request\"> Sample Request</h1><h1><pre><code>curl -X GET \"https://openapi.airtel.in/iot/api/customer/details/plans\"\n -H \"accept: application/json\"\n -H \"Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXX\"\n -H \"apikey: XXXXXXXXXXXXXXXXXXXXXX\"\n -H \"customer-id: XXXX\"\n -H \"iv-user: XXXXXXXXXXXXXXXXXXXXXX\"\n </code></pre></h1><h1 id=\"fetchPlans-response\">Sample Response</h1> <pre><code>{\n \"data\": [\n {\n \"planCode\": \"M2M_PLN_0001\",\n \"planName\": \"M2M-2G-1GB PLAN\",\n \"planDescription\": \"M2M-2G-1GB PLAN\",\n \"testPlan\": false\n },\n {\n \"planCode\": \"M2M_PLN_0003\",\n \"planName\": \"M2M 3G - 100 MB PLAN\",\n \"planDescription\": \"M2M 3G - 100 MB PLAN\",\n \"testPlan\": true\n }\n ]\n }\n </code></pre> You can generate same request response from Airtel IoT Developer Portal. To do so :\n <ul><li>Navigate to <em>Documentation</em> → <em>Account Details</em> → <em>Fetch Customer Plans</em> → <em>Test Endpoint</em></li> <li>Replace Bearer Token from access token generated from\n <a id=\"go-to-auth\" class=\"nav-link\">Generating OAuth 2.0 token</a></li> <li>Put values of <strong>apikey</strong>, <strong>iv-user</strong> & <strong>customer-id</strong> in mentioned text fields from Dashboard.</li> <li><strong>Make API Call</strong>.</li></ul></section></div>\n <div id=\"activate-sim-page\" ><section class=\"kong-doc\"><h1>Perform Activation</h1> <p>\n This API shall allow user to change the state of SIM from Available (Initial to Activate) to\n Active with Plan that is associated with the Billable account. It requires inputs as mobile\n number and plan code.\n </p> <h1 id=\"activate-sim-request\"> Sample Request</h1><h1><pre><code>curl -X POST \"https://openapi.airtel.in/iot/api/om/job/sim/activate\"\n -H \"accept: application/json\"\n -H \"Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXX\"\n -H \"apikey: XXXXXXXXXXXXXXXXXXXXXXXXX\"\n -H \"customer-id: XXXX\"\n -H \"iv-user: XXXXXXXXXXXXXXXXXXXXXXXXX\"\n -H \"Content-Type: application/json\"\n -d \"{ \\\"simDOList\\\": [ { \\\"mobileNO\\\": \\\"51967694502\\\",\n \\\"planDO\\\": { \\\"planCode\\\": \\\"M2M_PLN_0001\\\" } } ]}\"\n </code></pre></h1><h1><a id=\"activate-sim-response\"></a>Sample Response</h1> <pre><code>{\n \"data\": {\n \"jobId\": 795405,\n \"jobType\": \"ACTIVATE_SIM\",\n \"orderCount\": 0,\n \"successCount\": 0,\n \"failureCount\": 0,\n \"inProgressCount\": 0,\n \"rejectedCount\": 0,\n \"orderInitiateDate\": \"25-04-2019 03:35:40 PM\",\n \"statusMessage\": \"Your request is in progress\"\n }\n }\n </code></pre> You can generate same request response from Airtel IoT Developer Portal. To do so :\n <ul><li>Navigate to <em>Documentation</em> → <em>New Orders</em> → <em>Activate Sim</em> → <em>Activate Sim</em> → <em>Test Endpoint</em></li> <li>Replace Bearer Token from access token generated from\n <a id=\"go-to-auth\" class=\"nav-link\">Generating OAuth 2.0 token</a></li> <li>Put values of <strong>apikey</strong>, <strong>iv-user</strong> & <strong>customer-id</strong> in mentioned text fields from Dashboard.</li> <li>Put mobileNo in body fetched from response of API\n <a id=\"go-to-sim-inventory\" class=\"nav-link\">Fetch SIM Inventory</a></li> <li>Put planCode in body fetched from response of API\n <a id=\"go-to-fetch-plans\" class=\"nav-link\"> Fetch Plans </a></li> <li><strong>Make API Call</strong>.</li></ul><hr> <p><strong>NOTE</strong><br>\n The JobId in the response is important to track the status of activation order. The details of JobId can be fetched from Fetch Jobs API. There shall be Order ID(s) within a JobId to view status of specific Order(s) in a JobId.</p> <hr></section></div>\n"
servers:
- url: https://m2m.airteliot.co.in/iot/api/
security: []
tags:
- name: Inventory Management
description: This set of APIs fetch various details about Sim details, Basket details and so on in the account.
paths:
/bulk/download/history:
get:
tags:
- Inventory Management
summary: Download History
description: This API call is used to get the records for downloading files from Download History page that are processed for Download on the portal. It returns the Download Type, Requested and Completion date, status of download, and file name.
operationId: fetchDownloadHistoryUsingGET
parameters:
- name: Authorization
in: header
description: Authorization Header (Value must be like Bearer <Developer Access Token>)
required: true
schema:
type: string
default: Bearer XXXXXXXXXXXXXX
- name: apikey
in: header
description: Developer API Key
required: true
schema:
type: string
- name: customer-id
in: header
description: 'Unique ID to identify Customer (shared during On-Boarding process) '
required: true
schema:
type: integer
format: int64
- name: iv-user
in: header
description: Developer Account User ID
required: true
schema:
type: string
- name: pageNo
in: query
description: Page Number in case of pagination. Default Page No. is 1.
allowEmptyValue: false
schema:
type: integer
format: int32
default: 1
- name: pageSize
in: query
description: Page Size in pagination. Default Page Size is 25 and Maximum is 100.
allowEmptyValue: false
schema:
type: integer
format: int32
default: 25
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadHistoriesVo'
'400':
description: Request Message is not correct
content: {}
'500':
description: Internal Server Error.
content: {}
deprecated: false
/bulk/download/{downloadFileId}:
get:
tags:
- Inventory Management
summary: Download File
description: This API call is used to download the file which is available or ready to download after processing from Download History Page.
operationId: downloadTemplateFileUsingGET
parameters:
- name: Authorization
in: header
description: Authorization Header (Value must be like Bearer <Developer Access Token>)
required: true
schema:
type: string
default: Bearer XXXXXXXXXXXXXX
- name: apikey
in: header
description: Developer API Key
required: true
schema:
type: string
- name: customer-id
in: header
description: 'Unique ID to identify Customer (shared during On-Boarding process) '
required: true
schema:
type: integer
format: int64
- name: downloadFileId
in: path
description: downloadFileId
required: true
schema:
type: integer
format: int64
- name: iv-user
in: header
description: Developer Account User ID
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/vnd.ms-excel:
schema:
type: string
format: byte
'400':
description: Request Message is not correct
content: {}
'500':
description: Internal Server Error.
content: {}
deprecated: false
/bulk/sim/inventory/download:
get:
tags:
- Inventory Management
summary: Download SIM Inventory
description: This API call returns the SIM inventory file in excel format for that Billable account.
operationId: downloadSimInventoryOrderUsingGET
parameters:
- name: Authorization
in: header
description: Authorization Header (Value must be like Bearer <Developer Access Token>)
required: true
schema:
type: string
default: Bearer XXXXXXXXXXXXXX
- name: apikey
in: header
description: Developer API Key
required: true
schema:
type: string
- name: customer-id
in: header
description: 'Unique ID to identify Customer (shared during On-Boarding process) '
required: true
schema:
type: integer
format: int64
- name: iv-user
in: header
description: Developer Account User ID
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadHistoryVO'
'400':
description: Request Message is not correct
content: {}
'500':
description: Internal Server Error.
content: {}
deprecated: false
/details/baskets:
get:
tags:
- Inventory Management
summary: Fetch Customer Baskets
description: This API shall allow user to fetch the details of Baskets that are created on that Customer Account. It can fetch the details of a particular basket at any given point. It returns the SIM details in that basket with different states (Active, Available, Safe Custody, Test Mode, Suspended) along with Basket description and user details to whom that basket is assigned.
operationId: fetchCustomerBasketsUsingGET
parameters:
- name: Authorization
in: header
description: Authorization Header (Value must be like Bearer <Developer Access Token>)
required: true
schema:
type: string
default: Bearer XXXXXXXXXXXXXX
- name: apikey
in: header
description: Developer API Key
required: true
schema:
type: string
- name: basketId
in: query
description: Basket ID
allowEmptyValue: false
schema:
type: integer
format: int64
- name: basketName
in: query
description: Basket Name
allowEmptyValue: false
schema:
type: string
- name: customer-id
in: header
description: 'Unique ID to identify Customer (shared during On-Boarding process) '
required: true
schema:
type: integer
format: int64
- name: detailedView
in: query
description: ${detailedView.notes}
allowEmptyValue: false
schema:
type: boolean
default: true
- name: iv-user
in: header
description: Developer Account User ID
required: true
schema:
type: string
- name: myBaskets
in: query
description: My Baskets(Basket Onwer)
allowEmptyValue: false
schema:
type: boolean
default: false
example: false
- name: pageNo
in: query
description: Page Number in case of pagination. Default Page No. is 1.
allowEmptyValue: false
schema:
type: integer
format: int32
default: 1
- name: pageSize
in: query
description: Page Size in pagination. Default Page Size is 25 and Maximum is 100.
allowEmptyValue: false
schema:
type: integer
format: int32
default: 25
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Baskets'
'400':
description: Request Message is not correct
content: {}
'500':
description: Internal Server Error.
content: {}
deprecated: false
/details/basket/{basketId}/sims:
get:
tags:
- Inventory Management
summary: Fetch SIMs.
description: This API shall allow user to fetch the details of SIMs in a particular Basket on that Customer Account. It can fetch the details of one or more SIMs at a time from a particular basket including SIM details, Plan details, SIM status, and other required details of SIMs in basket as it is shown on the CMP portal.
operationId: fetchCustomerSimsUsingGET
parameters:
- name: Authorization
in: header
description: Authorization Header (Value must be like Bearer <Developer Access Token>)
required: true
schema:
type: string
default: Bearer XXXXXXXXXXXXXX
- name: apikey
in: header
description: Developer API Key
required: true
schema:
type: string
- name: basketId
in: path
description: Basket ID
required: true
schema:
type: integer
format: int64
default: 0
- name: customer-id
in: header
description: 'Unique ID to identify Customer (shared during On-Boarding process) '
required: true
schema:
type: integer
format: int64
- name: filterValue
in: query
description: Value on which Sims to be filtered
allowEmptyValue: false
schema:
type: string
- name: iv-user
in: header
description: Developer Account User ID
required: true
schema:
type: string
- name: pageNo
in: query
description: Page Number in case of pagination. Default Page No. is 1.
allowEmptyValue: false
schema:
type: integer
format: int32
default: 1
- name: pageSize
in: query
description: Page Size in pagination. Default Page Size is 25 and Maximum is 100.
allowEmptyValue: false
schema:
type: integer
format: int32
default: 25
- name: simFilterType
in: query
description: 'Filter Type on which Sims to be filtered. The allowed types are MSISDN / SIM '
allowEmptyValue: false
schema:
type: string
enum:
- MSISDN
- SIM_NO
- IMSI
- name: simStatus
in: query
description: Status of SIM(s) being fetched from a basket
allowEmptyValue: false
schema:
type: string
enum:
- INITIAL
- ACTIVE
- SAFE_CUSTODY
- ACTIVATED_ON_TEST_MODE
- IN_PROGRESS
- SUSPENDED
- TEMP_DISCONNECT
- ACTIVE_AND_SAFE_CUSTODY
- ACTIVE_AND_TEMP_DISCONNECT
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Sims'
'400':
description: Request Message is not correct
content: {}
'500':
description: Internal Server Error.
content: {}
deprecated: false
components:
schemas:
DownloadHistoriesVo:
title: DownloadHistoriesVo
type: object
properties:
downloadHistories:
type: array
items:
$ref: '#/components/schemas/DownloadHistoryView'
total:
type: string
DownloadHistoryView:
title: DownloadHistoryView
type: object
properties:
basketName:
type: string
description: Basket Name
completionDate:
type: string
description: Download Request Completion Date and Time
creationDate:
type: string
description: Download Request Creation Date and Time
downloadFileId:
type: integer
description: Download Request ID
format: int64
downloadType:
type: string
description: Download Type
extension:
type: string
description: File Extension
fileName:
type: string
description: File Name
progress:
type: integer
description: File Download Progress
format: int32
status:
type: string
description: Download Status
DownloadHistoryVO:
title: DownloadHistoryVO
type: object
properties:
basketName:
type: string
description: Basket Name
completionDate:
type: string
description: Download Request Completion Date and Time
creationDate:
type: string
description: Download Request Creation Date and Time
downloadFileId:
type: integer
description: Download Request ID
format: int64
downloadType:
type: string
description: Download Type
extension:
type: string
description: File Extension
fileName:
type: string
description: File Name
progress:
type: integer
description: File Download Progress
format: int32
status:
type: string
description: Download Status
SimApnVO:
title: SimApnVO
type: object
properties:
attachedApnIp:
type: string
attachedApnIpType:
type: string
attachedApnName:
type: string
attchedApnType:
type: string
SimDetailsVO:
title: SimDetailsVO
type: object
properties:
activationDate:
type: string
basketId:
type: string
circleName:
type: string
dataType:
type: string
dataUnits:
type: string
description:
type: string
imsi:
type: string
inProgressJob:
type: string
inProgressJobOrder:
type: string
isPaired:
type: string
isPrepaidSim:
type: string
lsi:
type: string
mobileNo:
type: string
onboardingDate:
type: string
parentBasketId:
type: string
planCode:
type: string
planName:
type: string
planType:
type: string
safeCustodyDate:
type: string
simApnVO:
type: array
items:
$ref: '#/components/schemas/SimApnVO'
simId:
type: string
simInfo1:
type: string
simInfo2:
type: string
simInfo3:
type: string
simNo:
type: string
simTrailEndTime:
type: string
simTrailStartTime:
type: string
status:
type: string
Baskets:
title: Baskets
type: object
properties:
baskets:
type: array
items:
$ref: '#/components/schemas/BasketDetailsVO'
totalActiveSims:
type: string
totalAvailableSims:
type: string
totalBaskets:
type: string
totalInActiveSims:
type: string
totalInProgressSims:
type: string
totalSafeCustodySims:
type: string
totalSims:
type: string
totalSuspendedSims:
type: string
totalTestModeSims:
type: string
Sims:
title: Sims
type: object
properties:
sims:
type: array
items:
$ref: '#/components/schemas/SimDetailsVO'
total:
type: string
BasketDetailsVO:
title: BasketDetailsVO
type: object
properties:
activeSims:
type: string
availableSims:
type: string
basketId:
type: string
basketName:
type: string
basketPermission:
type: string
creationDate:
type: string
customerId:
type: string
emailId:
type: string
firstName:
type: string
inActiveSims:
type: string
inProgressSims:
type: string
lastName:
type: string
managedBy:
type: string
mobileNo:
type: string
parentBasketId:
type: string
remarks:
type: string
safeCustodySims:
type: string
suspendedSims:
type: string
testModeSims:
type: string
totalSims:
type: string
x-tagGroups:
- name: Manage Customer APIs
tags:
- Account Authorization
- Account Details
- Inventory Management
- name: New Orders APIs
tags:
- SIM LifeCycle
- name: Bulk Orders APIs
tags:
- SIM LifeCycle Bulk
- name: Jobs APIs
tags:
- Job Status
- name: Device Details APIs
tags:
- Device & Session Information
- name: Whitelisting APIs
tags:
- Whitelisting
- name: KYC APIs
tags:
- KYC Manager
- name: Messaging Centre APIs
tags:
- Messaging Centre