> For the complete documentation index, see [llms.txt](https://docs.idlayr.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.idlayr.com/api-reference/eligibility/v1.md).

# v1

Resolve, for a device IP or a phone number, which IDlayr products the user is eligible for — gated on connectivity to the MNO, your project's authorisation (allowed networks) and per-product MNO/MVNO support.

## Get Eligibility using mobile IP address

> Resolves the mobile network behind the supplied device IP address and lists the IDlayr\
> products the user is eligible for on that network.<br>

```json
{"openapi":"3.1.0","info":{"title":"IDlayr Eligibility API","version":"1.0.0"},"tags":[{"name":"eligibility_v1","description":"Resolve, for a device IP or a phone number, which IDlayr products the user is eligible\nfor — gated on connectivity to the MNO, your project's authorisation (allowed networks)\nand per-product MNO/MVNO support.\n"}],"servers":[{"url":"https://{data_residency}.api.idlayr.com","description":"For accounts with data residency in the EU or US.","variables":{"data_residency":{"default":"eu","enum":["eu","us"]}}}],"security":[{"ProjectBearerAuth":[]}],"components":{"securitySchemes":{"ProjectBearerAuth":{"description":"The IDlayr APIs expect the bearer token to be an [OAuth2 Access Token](https://tools.ietf.org/html/rfc6749#section-1.4).\nThe access token should be in the `Authorization` HTTP header,\ne.g. `Authorization: Bearer {access_token}`. See [Create an Access Token](/docs/reference/basics#operation/oauth2-token).\n\nThe token should be associated with an **IDlayr** Project. These are created using a Project's `client_id` and `client_secret`.\n","type":"http","scheme":"bearer"}},"headers":{"X-RateLimit-Limit":{"description":"Request limit per second.","schema":{"type":"integer"},"required":true},"X-RateLimit-Remaining":{"description":"Remaining requests for the rate limit period.","schema":{"type":"integer"},"required":true},"X-RateLimit-Reset":{"description":"Time left, in seconds, for `X-RateLimit-Remaining` to be reset.","schema":{"type":"integer"},"required":true}},"schemas":{"DeviceIpEligibility":{"description":"The mobile network resolved for a device IP address and the IDlayr products the user is\neligible for on that network.\n","type":"object","unevaluatedProperties":false,"required":["network_id","network_name","country_code","products"],"properties":{"network_id":{"description":"The network identifier.","type":"string"},"network_name":{"description":"The network name.","type":"string"},"country_code":{"$ref":"#/components/schemas/CountryCode"},"mobile_data_ip":{"description":"The resolved IP address (IPv4 or IPv6) of the mobile device.","type":"string"},"network_aliases":{"description":"Optional. Aliases associated with the resolved network.","type":"array","items":{"type":"string"}},"products":{"description":"The IDlayr products the user is eligible for on the resolved network.","type":"array","items":{"$ref":"#/components/schemas/SupportedProduct"}}}},"CountryCode":{"description":"Two-letter country code, [ISO 3166-1 alpha-2](https://www.iso.org/obp/ui/#iso:std:iso:3166:-3:ed-3:v1:en).","type":"string","pattern":"[A-Z]{2}"},"SupportedProduct":{"description":"An IDlayr product the user is eligible for.","type":"object","unevaluatedProperties":false,"required":["product_id","product_name"],"properties":{"product_id":{"description":"The product identifier.","type":"string"},"product_name":{"description":"The product name.","type":"string"}}},"MobileNetworkOperatorNotSupported":{"description":"The Mobile Network Operator (MNO) for the supplied phone number is not supported.","type":"object","unevaluatedProperties":false,"required":["type","title","status","detail","error_code"],"properties":{"type":{"description":"A URI reference [RFC 3986] that identifies the problem type.","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"error_code":{"description":"Machine-readable error code identifying this problem type.","type":"string","const":"mno_not_supported"}}},"NotMobileIp":{"description":"The IP address used to drive the verification redirect is not from a mobile cellular\nnetwork and cannot be routed to a mobile network operator.\n","type":"object","unevaluatedProperties":false,"required":["type","title","status","detail","error_code"],"properties":{"type":{"description":"A URI reference [RFC 3986] that identifies the problem type.","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"error_code":{"description":"Machine-readable error code identifying this problem type.","type":"string","const":"not_mobile_ip"}}},"RateLimitReached":{"description":"The API rate limit for the workspace has been exceeded. The `Retry-After` header carries\nthe number of seconds after which the caller can retry.\n","type":"object","unevaluatedProperties":false,"required":["type","title","status","detail","error_code"],"properties":{"type":{"description":"A URI reference [RFC 3986] that identifies the problem type.","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"error_code":{"description":"Machine-readable error code identifying the problem type.","type":"string"}}}}},"paths":{"/v1/eligibility/device-ips/{ip}":{"get":{"summary":"Get Eligibility using mobile IP address","description":"Resolves the mobile network behind the supplied device IP address and lists the IDlayr\nproducts the user is eligible for on that network.\n","operationId":"get-eligibility-by-device-ip-v1","tags":["eligibility_v1"],"responses":{"200":{"description":"The resolved network and the products the user is eligible for, for the device IP.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceIpEligibility"}}}},"400":{"description":"MNO Not Supported","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/MobileNetworkOperatorNotSupported"}}}},"412":{"description":"Not a mobile IP","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/NotMobileIp"}}}},"429":{"description":"Rate Limit Reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitReached"}}}}}}}}}
```

## Get Eligibility using Phone Number

> Resolves the mobile network a phone number belongs to (via HLR) and lists the IDlayr\
> products the user is eligible for.<br>

```json
{"openapi":"3.1.0","info":{"title":"IDlayr Eligibility API","version":"1.0.0"},"tags":[{"name":"eligibility_v1","description":"Resolve, for a device IP or a phone number, which IDlayr products the user is eligible\nfor — gated on connectivity to the MNO, your project's authorisation (allowed networks)\nand per-product MNO/MVNO support.\n"}],"servers":[{"url":"https://{data_residency}.api.idlayr.com","description":"For accounts with data residency in the EU or US.","variables":{"data_residency":{"default":"eu","enum":["eu","us"]}}}],"security":[{"ProjectBearerAuth":[]}],"components":{"securitySchemes":{"ProjectBearerAuth":{"description":"The IDlayr APIs expect the bearer token to be an [OAuth2 Access Token](https://tools.ietf.org/html/rfc6749#section-1.4).\nThe access token should be in the `Authorization` HTTP header,\ne.g. `Authorization: Bearer {access_token}`. See [Create an Access Token](/docs/reference/basics#operation/oauth2-token).\n\nThe token should be associated with an **IDlayr** Project. These are created using a Project's `client_id` and `client_secret`.\n","type":"http","scheme":"bearer"}},"headers":{"X-RateLimit-Limit":{"description":"Request limit per second.","schema":{"type":"integer"},"required":true},"X-RateLimit-Remaining":{"description":"Remaining requests for the rate limit period.","schema":{"type":"integer"},"required":true},"X-RateLimit-Reset":{"description":"Time left, in seconds, for `X-RateLimit-Remaining` to be reset.","schema":{"type":"integer"},"required":true}},"schemas":{"PhoneNumberEligibility":{"description":"The mobile network resolved for a phone number and the IDlayr products the user is\neligible for.\n","type":"object","unevaluatedProperties":false,"required":["network_id","network_name","country_code","dialing_code","phone_number","products"],"properties":{"network_id":{"description":"The network identifier.","type":"string"},"network_name":{"description":"The network name.","type":"string"},"country_code":{"$ref":"#/components/schemas/CountryCode"},"dialing_code":{"description":"The [country dialing code](https://www.itu.int/dms_pub/itu-t/opb/sp/T-SP-E.164D-11-2011-PDF-E.pdf).","type":"string"},"phone_number":{"description":"The looked-up phone number, in [E.164 format](https://www.itu.int/rec/T-REC-E.164-201011-I/en).","type":"string","format":"E.164"},"network_aliases":{"description":"Optional. Aliases associated with the resolved network.","type":"array","items":{"type":"string"}},"products":{"description":"The IDlayr products the user is eligible for.","type":"array","items":{"$ref":"#/components/schemas/SupportedProduct"}},"project_mode":{"description":"Optional. Present only when the Project is pointing at the sandbox environment.","type":"string"}}},"CountryCode":{"description":"Two-letter country code, [ISO 3166-1 alpha-2](https://www.iso.org/obp/ui/#iso:std:iso:3166:-3:ed-3:v1:en).","type":"string","pattern":"[A-Z]{2}"},"SupportedProduct":{"description":"An IDlayr product the user is eligible for.","type":"object","unevaluatedProperties":false,"required":["product_id","product_name"],"properties":{"product_id":{"description":"The product identifier.","type":"string"},"product_name":{"description":"The product name.","type":"string"}}},"PhoneNumberBadRequest":{"description":"The request could not be processed for the supplied phone number. `error_code`\ndistinguishes the cause:\n- `phone_number_invalid`: the supplied phone number is not valid E.164.\n- `mno_not_supported`: the Mobile Network Operator for the supplied number is not supported.\n","type":"object","unevaluatedProperties":false,"required":["type","title","status","detail","error_code"],"properties":{"type":{"description":"A URI reference [RFC 3986] that identifies the problem type.","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"error_code":{"description":"Machine-readable error code identifying the cause of the bad request.","type":"string","enum":["phone_number_invalid","mno_not_supported"]}}},"RateLimitReached":{"description":"The API rate limit for the workspace has been exceeded. The `Retry-After` header carries\nthe number of seconds after which the caller can retry.\n","type":"object","unevaluatedProperties":false,"required":["type","title","status","detail","error_code"],"properties":{"type":{"description":"A URI reference [RFC 3986] that identifies the problem type.","type":"string"},"title":{"description":"A short, human-readable summary of the problem type.","type":"string"},"status":{"description":"The HTTP status code generated by the origin server for this occurrence of the problem.","type":"integer"},"detail":{"description":"A human-readable explanation specific to this occurrence of the problem.","type":"string"},"error_code":{"description":"Machine-readable error code identifying the problem type.","type":"string"}}}}},"paths":{"/v1/eligibility/phone-numbers/{phone_number}":{"get":{"summary":"Get Eligibility using Phone Number","description":"Resolves the mobile network a phone number belongs to (via HLR) and lists the IDlayr\nproducts the user is eligible for.\n","operationId":"get-eligibility-by-phone-number-v1","tags":["eligibility_v1"],"responses":{"200":{"description":"The resolved network and the products the user is eligible for, for the phone number.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneNumberEligibility"}}}},"400":{"description":"Bad Request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/PhoneNumberBadRequest"}}}},"429":{"description":"Rate Limit Reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitReached"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.idlayr.com/api-reference/eligibility/v1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
