Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
glab(1) 								 glab(1)

NAME
     glab-api - Make an authenticated request to the GitLab API.

SYNOPSIS
     glab api  [flags]

DESCRIPTION
     Makes  an	authenticated HTTP request to the GitLab API, and prints the re-
     sponse.  Specify either a path to a GitLab API v4 endpoint, or  graphql  to
     access the GitLab GraphQL API.

     For more information, see:

     * GitLab REST API documentation <https://docs.gitlab.com/api/>

     * GitLab GraphQL documentation <https://docs.gitlab.com/api/graphql/>

     If  the  current directory is a Git directory, this command uses the GitLab
     authenticated host in the current directory. Otherwise, gitlab.com is used.
     To override the GitLab hostname, use --hostname.

     When used in the endpoint argument, these placeholder values  are	replaced
     with values from the repository of the current directory:

     * :branch

     * :fullpath

     * :group

     * :id

     * :namespace

     * :repo

     * :user

     * :username

     The  default  HTTP  request method is GET when no parameters are added, and
     POST otherwise. To override the method, use --method.

     Pass one or more --raw-field values in key=value format to add JSON-encoded
     string parameters to the POST body.

     The --field flag behaves like --raw-field	but  converts  values  based  on
     their format:

     * Literal	values	true,  false, null, and integer numbers are converted to
       the matching JSON types.

     * Placeholder values :namespace, :repo, and :branch are populated with val-
       ues from the repository of the current directory.

     * If the value starts with @, the rest of the value  is  interpreted  as  a
       filename to read the value from. Pass - to read from standard input.

     Neither --field nor --raw-field parses JSON arrays or objects; those values
     are sent as strings. To pass a JSON body literally, use --input.

     For GraphQL requests, all fields other than query and operationName are in-
     terpreted as GraphQL variables.

     To  send  data  as multipart/form-data instead of JSON, use --form. This is
     required for API endpoints that accept file uploads, such as  wiki  attach-
     ments.   Pass  one  or  more --form values in key=value format. To upload a
     file, prefix the value with @ followed by the file path.  Pass  -	to  read
     from  standard  input.  Do not combine --form with --field, --raw-field, or
     --input.

     To pass a raw request body, use --input with a file path. Pass  -	to  read
     from  standard input. In this mode, parameters specified with --field flags
     are serialized into URL query parameters.

     In --paginate mode, all pages of results are requested  sequentially  until
     no more pages of results remain. For GraphQL requests:

     * The original query must accept an $endCursor: String variable.

     * The query must fetch the pageInfo{ hasNextPage, endCursor } set of fields
       from a collection.

     The --output flag controls the output format:

     * json  (default):  Pretty-printed JSON. Arrays are output as a single JSON
       array.

     * ndjson: Newline-delimited JSON, also known as JSON Lines. Each array ele-
       ment or object is output on a separate line. This format is more  memory-
       efficient for large datasets and works well with tools like jq.

     For     ndjson    format	 specifications,    see    the	  ndjson    spec
     <https://github.com/ndjson/ndjson-spec>  and  JSON   Lines   <https://json-
     lines.org/>.

OPTIONS
     -F,  --field=[]	   Add	a  parameter  of  inferred type. Using this flag
     changes the default HTTP method to POST.

     --form=[]	    Add a multipart form field. To upload  a  file,  prefix  the
     value with @ followed by the file path. To read from standard input, use @-
     (at most once). Using this flag changes the default HTTP method to POST.

     -H, --header=[]	  Add an additional HTTP request header.

     --hostname=""	 The  GitLab  hostname for the request. Defaults to git-
     lab.com, or the authenticated host in the current Git directory.

     -i, --include[=false]	Include HTTP response headers in the output.

     --input=""      The file to use as the body for the HTTP request.

     -X, --method="GET"      The HTTP method for the request.

     --output="json"	  Format output as: json, ndjson.

     --paginate[=false]      Make additional HTTP requests to fetch all pages of
     results.

     -f, --raw-field=[]      Add a string parameter.

     --silent[=false]	   Do not print the response body.

OPTIONS INHERITED FROM PARENT COMMANDS
     -h, --help[=false]      Show help for this command.

EXAMPLE
     # List releases for the current project, expanding the :fullpath placeholder
     glab api projects/:fullpath/releases

     # List issues for a project by URL-encoded path
     glab api projects/gitlab-com%2Fwww-gitlab-com/issues

     # Upload a file to a project wiki
     glab api --method POST projects/:fullpath/wikis/attachments --form "file=@./image.png" --form "branch=main"

     # Debug the HTTP request and response, including headers and body.
     # Use --input (here, piped from stdin) for JSON arrays or objects;
     # --field only converts scalars (bool, int, null, placeholders, @file).
     echo '{"allowed_to_push":[{"user_id":1}]}' | GLAB_DEBUG_HTTP=1 glab api -X PATCH "projects/:fullpath/protected_branches/main" --input -

     # Fetch all pages of issues
     glab api issues --paginate

     # Fetch all pages of issues as newline-delimited JSON
     glab api issues --paginate --output ndjson

     # Pipe paginated output to jq to filter open issues
     glab api issues --paginate --output ndjson | jq 'select(.state == "opened")'

     # Run a simple GraphQL query
     glab api graphql -f query="query { currentUser { username } }"

     # Run a multi-line GraphQL query for project metadata
     glab api graphql -f query='
       query {
	 project(fullPath: "gitlab-org/gitlab-docs") {
	   name
	   forksCount
	   statistics {
	     wikiSize
	   }
	   issuesEnabled
	   boards {
	     nodes {
	       id
	       name
	     }
	   }
	 }
       }
     '

     # Run a paginated GraphQL query using an endCursor variable
     glab api graphql --paginate -f query='
       query($endCursor: String) {
	 project(fullPath: "gitlab-org/graphql-sandbox") {
	   name
	   issues(first: 2, after: $endCursor) {
	     edges {
	       node {
		 title
	       }
	     }
	     pageInfo {
	       endCursor
	       hasNextPage
	     }
	   }
	 }
       }'

SEE ALSO
     glab(1)

Auto generated by spf13/cobra	    Aug 2026				 glab(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=glab-api&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help