Identity & platformbilling
POST/groups/{group_id}/limit-increase
File a request to raise one namespace limit
request_limit_increase
billing:request_limit_increase
A token needs thebilling:request_limit_increasescope: File a limit-increase requestGranted bywrite_api.Every operation this scope unlocksAudited · mutation
x-gitmoap-audit: {"kind":"audited","arg":"mutation"}
Only the namespace's owners file requests, and only people, not service accounts. Name the limit, the value you need — above the current limit and within the limit's hard ceiling — and a justification of up to 2,000 characters; a platform administrator reviews it. A limit can have only one pending request at a time.
Parameters
Path
- group_idGroupId (string · uuid)Any group in the namespace
Request body
application/json- justificationstring
- limit_keyLimitKeystorage_bytesmax_repos_per_groupmax_members_per_scopemax_teams_per_orgmax_members_per_teammax_custom_roles_per_orgmax_limits_per_scopemax_approval_rules_per_scopemax_scim_tokens_per_orgmax_ai_agents_per_orgmax_ai_concurrent_sessions_per_orgmax_ai_sessions_per_org_per_daymax_ai_revision_drafts_per_org_per_daymax_balance_adjustments_per_namespace_per_daymax_agent_workspace_minutes_per_monthai_management_fee_bpsmax_open_mrs_per_repomax_comments_per_mrmax_branches_per_repomax_tags_per_repomax_webhooks_per_scopemax_service_accounts_per_scopemax_branch_rules_per_scopemax_provider_connections_per_scopemax_reviewers_per_mrmax_reactions_per_commentmax_commit_statuses_per_commitmax_provider_installs_per_groupmax_concurrent_pipeline_runsmax_pipeline_runs_per_monthmax_pipeline_minutes_per_monthmax_pipeline_dag_nodesmax_push_bytesmax_package_bytesmax_release_asset_bytesmax_node_log_bytesmax_releases_per_repomax_pipelines_per_repomax_open_issues_per_scopemax_labels_per_scopemax_milestones_per_scopemax_blueprints_per_scopemax_wiki_pages_per_scopemax_services_per_scopemax_environments_per_scopemax_scorecards_per_scopemax_pipeline_components_per_scopemax_versions_per_pipeline_componentmax_comments_per_issuemax_relations_per_issuemax_children_per_issuemax_activities_per_issuemax_code_links_per_issuemax_mr_links_per_issuemax_anchors_per_issuemax_anchors_per_repomax_criteria_per_issuemax_criteria_per_repomax_code_todos_per_repomax_root_groupsA recognised limit name — every
PlanLimitscap plus the user-scopedmax_root_groups. The identity a limit-increase request and a namespace override are keyed by. - requested_valueinteger · int640–∞
Request body exampleSynthesized example
{
"justification": "justification-646a",
"limit_key": "storage_bytes",
"requested_value": 89
}
Responses
201Request filedapplication/json
- created_atstring
- current_effectiveinteger · int640–∞
- justificationstring
- limit_keyLimitKeystorage_bytesmax_repos_per_groupmax_members_per_scopemax_teams_per_orgmax_members_per_teammax_custom_roles_per_orgmax_limits_per_scopemax_approval_rules_per_scopemax_scim_tokens_per_orgmax_ai_agents_per_orgmax_ai_concurrent_sessions_per_orgmax_ai_sessions_per_org_per_daymax_ai_revision_drafts_per_org_per_daymax_balance_adjustments_per_namespace_per_daymax_agent_workspace_minutes_per_monthai_management_fee_bpsmax_open_mrs_per_repomax_comments_per_mrmax_branches_per_repomax_tags_per_repomax_webhooks_per_scopemax_service_accounts_per_scopemax_branch_rules_per_scopemax_provider_connections_per_scopemax_reviewers_per_mrmax_reactions_per_commentmax_commit_statuses_per_commitmax_provider_installs_per_groupmax_concurrent_pipeline_runsmax_pipeline_runs_per_monthmax_pipeline_minutes_per_monthmax_pipeline_dag_nodesmax_push_bytesmax_package_bytesmax_release_asset_bytesmax_node_log_bytesmax_releases_per_repomax_pipelines_per_repomax_open_issues_per_scopemax_labels_per_scopemax_milestones_per_scopemax_blueprints_per_scopemax_wiki_pages_per_scopemax_services_per_scopemax_environments_per_scopemax_scorecards_per_scopemax_pipeline_components_per_scopemax_versions_per_pipeline_componentmax_comments_per_issuemax_relations_per_issuemax_children_per_issuemax_activities_per_issuemax_code_links_per_issuemax_mr_links_per_issuemax_anchors_per_issuemax_anchors_per_repomax_criteria_per_issuemax_criteria_per_repomax_code_todos_per_repomax_root_groupsA recognised limit name — every
PlanLimitscap plus the user-scopedmax_root_groups. The identity a limit-increase request and a namespace override are keyed by. - request_idLimitIncreaseRequestId (string · uuid)
- requested_byUserId (string · uuid)
- requested_valueinteger · int640–∞
- root_group_idGroupId (string · uuid)
- statusLimitRequestStatuspendingapproveddeniedappliedLifecycle of a limit-increase request.
Appliedis the terminal success state (the override was written);Approvedexists for symmetry but the approve path applies immediately, so a persisted request is never leftApproved-but-not-Applied. - updated_atstring
- applied_valueinteger · int64 or nulloptional0–∞
- decided_atstring or nulloptional
- decided_bystring or nulloptional
- decision_notestring or nulloptional
201 exampleSynthesized example
{
"created_at": "2026-10-11T05:31:14Z",
"current_effective": 14,
"justification": "justification-7c4b",
"limit_key": "storage_bytes",
"request_id": "b83a34e8-be19-4a11-897c-a3d27821c283",
"requested_by": "b7e2d1c0-9f8e-4d7c-a6b5-c4d3e2f1a0b9",
"requested_value": 9,
"root_group_id": "4c1d8e2f-6a3b-4f90-b7c5-1e2d3c4b5a69",
"status": "pending",
"updated_at": "2026-10-16T20:56:19Z",
"applied_value": 86,
"decided_at": "2026-10-12T03:12:32Z",
"decided_by": "a3f1c2d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"decision_note": "decision-note-4a8f"
}
400Invalid requestapplication/json
Error codes
- BAD_REQUESTThe request is malformed: a parameter or a body field is not a well-formed value of its type
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
400 exampleSynthesized example
{
"error": {
"code": "code-811c",
"message": "Inline scalar newtypes but keep their brand"
}
}
401Unauthenticated — no credential, or an invalid oneapplication/json
Error codes
- UNAUTHORIZEDNo credential was sent, or the one sent is invalid, expired or revoked
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
401 exampleSynthesized example
{
"error": {
"code": "code-8505",
"message": "Inline scalar newtypes but keep their brand"
}
}
403Forbidden — the caller's access level or token scope is insufficientapplication/json
Error codes
- FORBIDDENYou are signed in but may not do this here;
reasonnames the permission or the rule that refused it - INSUFFICIENT_SCOPEThe access token lacks the scope this operation needs;
required_scopenames it - PERMISSION_REQUIREDYou need a permission you do not hold here; the message names it
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
403 exampleSynthesized example
{
"error": {
"code": "code-6b11",
"message": "Inline scalar newtypes but keep their brand"
}
}
404Not found — or found and private, which is masked as absentapplication/json
Error codes
- NOT_FOUNDThe resource does not exist — or exists and you cannot see it: a private resource you have no access to answers exactly as an absent one does
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
404 exampleSynthesized example
{
"error": {
"code": "code-8ecd",
"message": "Draw the region map from operation density"
}
}
409A pending request for this limit already existsapplication/json
Error codes
- CONFLICTThe request conflicts with the resource's current state;
reasonsays how - LEGAL_ACCEPTANCE_REQUIREDAccept the current Terms of Service before changing anything; reading stays open
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
409 exampleSynthesized example
{
"error": {
"code": "code-60e4",
"message": "Inline scalar newtypes but keep their brand"
}
}
CLI
gitmoap billing request-limit-increase
- --group-ididAny group in the namespace (id or group path)
- --justificationstring
- --limit-keystorage_bytes | max_repos_per_group | max_members_per_scope | max_teams_per_org | max_members_per_team | max_custom_roles_per_org | max_limits_per_scope | max_approval_rules_per_scope | max_scim_tokens_per_org | max_ai_agents_per_org | max_ai_concurrent_sessions_per_org | max_ai_sessions_per_org_per_day | max_ai_revision_drafts_per_org_per_day | max_balance_adjustments_per_namespace_per_day | max_agent_workspace_minutes_per_month | ai_management_fee_bps | max_open_mrs_per_repo | max_comments_per_mr | max_branches_per_repo | max_tags_per_repo | max_webhooks_per_scope | max_service_accounts_per_scope | max_branch_rules_per_scope | max_provider_connections_per_scope | max_reviewers_per_mr | max_reactions_per_comment | max_commit_statuses_per_commit | max_provider_installs_per_group | max_concurrent_pipeline_runs | max_pipeline_runs_per_month | max_pipeline_minutes_per_month | max_pipeline_dag_nodes | max_push_bytes | max_package_bytes | max_release_asset_bytes | max_node_log_bytes | max_releases_per_repo | max_pipelines_per_repo | max_open_issues_per_scope | max_labels_per_scope | max_milestones_per_scope | max_blueprints_per_scope | max_wiki_pages_per_scope | max_services_per_scope | max_environments_per_scope | max_scorecards_per_scope | max_pipeline_components_per_scope | max_versions_per_pipeline_component | max_comments_per_issue | max_relations_per_issue | max_children_per_issue | max_activities_per_issue | max_code_links_per_issue | max_mr_links_per_issue | max_anchors_per_issue | max_anchors_per_repo | max_criteria_per_issue | max_criteria_per_repo | max_code_todos_per_repo | max_root_groups
- --requested-valuenumber